java实现表格tr拖动的实例(分享)

实现功能:实现表格tr拖动,并保存因为拖动改变的等级.

jsp代码

<div id="mainContainer">
     <div class="contentCol">
      <div id="b_center">
       <div class="mod mod1 parent-table" id="launch-detail-table">
         <div class="mod-header radius">
          <h2 style="margin-bottom:0px;margin-top:0px;height:43px;line-height:43px;">
           菜单管理
          </h2>
          <span style="color:red">请使用拖拽调整排列顺序</span>
          <button id="addLG" type="button" class="czbtn add_class" style="width:140px;margin-left:20px;">
          <img alt="" src="/center/images/btn_add.png">   添加菜单</button>
         </div>
         <br>
         <div class="mod-body">
          <table class="data-load-2 appgrouping" width="100%" border="0"
           cellspacing="0" id="showTable"
           style="word-wrap: break-word; word-break: break-all;table-layout: inherit;background:#FFFFFF !important;">
           <thead>
            <tr class="first_tr" >
             <th class="first" width="50" style="text-align: center;width:10%;">编号</th>
             <th width="400" align="center" style="text-align: center;width:17%">菜单名称</th>
             <!-- <th width="160" align="center" style="text-align: center">菜单级别</th>
             <th width="80" align="center" style="text-align: center">二级菜单</th>-->
             <th width="100" align="center" style="text-align: center;width:18%">菜单英文名称</th>
             <th align="center" style="text-align: center;width:15%">菜单类型</th>
             <th align="center" style="text-align: center;width:20%">是否显示</th>
             <th width="210" align="center" style="text-align: center;width:20%">操作</th>
            </tr>
           </thead>

           <tbody id="data-list" style="text-align: center;">
            <%
             if (menuList != null && menuList.size() > 0) {
               for (int i = 0;i < menuList.size();i++) {
               JSONObject json = menuList.getJSONObject(i);
               Menu menu = (Menu)JSONObject.toBean(json.getJSONObject("menu"),Menu.class);
            %>
            <tr id="<%=menu.getLevel() %>">
             <td id="<%=menu.getMenuId() %>">
              <%=menu.getLevel()%>
             </td>
             <td>
              <div class="menuName"><%=menu.getMenuName()%></div>
             </td>
             <td>
              <div class="menuName"><%=menu.getEnMenuName()==null?"":menu.getEnMenuName()%></div>
             </td>
             <!-- <td>
              <div class="menuLevel"><%//if(menu.getHasSecond() == 1){%>一级菜单<%//}else{%>二级菜单<%//}%></div>
             </td>
             <td>
              <div class="isChild"><%//if(json.getString("isChild").equals("1")){%><a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" onclick="getChildMenu('<%//menu.getMenuId()%>')">查看</a><%//} else{%>无<%//}%></div>
             </td> -->
             <td>
              <div class="menuName"><%if(menu.getMenuType() == 0){%>系统类型<%}else if(menu.getMenuType() == 1){%>图文类型<%}else{%>链接类型<%}%></div>
             </td>
             <td>
              <%if(menu.getState() == 0){ %>
              <button type="button" onclick="changeMenuState('<%=menu.getMenuName() %>',<%=menu.getMenuId() %>,1)" class="showState czbtn">显示</button>
              <button type="button" class="czbtn" style="background: #eaeaea;color: #d0d0d0;">已隐藏</button>
              <%}else{ %>
              <button type="button" class="czbtn" style="background: #eaeaea;color: #d0d0d0;">已显示</button>
              <button type="button" onclick="changeMenuState('<%=menu.getMenuName() %>',<%=menu.getMenuId() %>,0)" class="hideState czbtn">隐藏</button>
              <%} %>
             </td>
             <td>
              <%if(menu.getMenuType() != 0) {%><div>
              <div style="float: right;margin-right:10px;">
               <a title="删除" href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="color:red;width:30px;display:inline-block;" id="<%=menu.getMenuId()%>" class="icon-trash delMtCenter">

               </a>
              </div>
              <%} %>
              <%if(menu.getMenuType() != 0) {%>
              <div style="float: right;margin-right:10px;">
               <a title="修改" href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="color:red;width:30px;display:inline-block;" id="<%=menu.getMenuId()%>" class="icon-pencil mer_mod">

               </a>
              </div>
              <%} %>
             </td>
            </tr>
            <%
             }
              } else {
            %>
            <tr>
             <td colspan="6" align="center">
              暂无数据
             </td>
            </tr>
            <%
             }
            %>
           </tbody>
          </table>
         </div>
        <div class="mod-bottom clearfix">
         <div class="fr pagination"></div>
        </div>
       </div>
      </div>
     </div>
    </div>
   </div>
  </div>
  <div class="ft" style="height: 50px;line-height: 50px;">
   <div class="copyright" style="display: none;">
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >关于我们</a> |
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >微博</a> |
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Blog</a> |
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >服务条款 </a> |
    <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >隐私政策</a>
   </div>
   <p class="copy">Incongress.com, All Rights Reserved.<span class="ICP"></span></p>
  </div>
  <script src="/cvc/center/js/cached_lay_reports.js" type="text/javascript"></script>
  <script src="/cvc/center/js/cached_lay_reports_cus.js" type="text/javascript"></script>
  <div id="mask"></div>
  <div class="tkDiv" id="addLOGO" style="display:none;z-index:12;width:800px;height:auto;margin-left:-50px;">

    <div class="tk1_header" style="width:800px !important;height:40px;line-height:40px;margin-left:-10px;margin-top:-10px;">
     <span style="font-size: 16px;margin-left:20px;color:#FFF;margin-top:-5px;" id="gn_title" >添加菜单</span>
     <a id="close_modal" style="width:30px;height:20px;background:url('/CHC2015/cn/images/close.png') no-repeat 0px 10px;float: right;">×</a>
    </div>
    <div class="tk1" id="addZ" style="width:790px;height:260px;margin-left:-2px;overflow-y:auto;">
    <div class="tk1_content" id="registerDiv" style="width:750px;margin-top:-10px;">
     <form id="menuForm" class="bs-docs-example form-horizontal" method="post" action="<%=path %>/webCenter.do">
     <input type="hidden" name="method" value="saveOrUpdateMenu">
    <input type="hidden" name="pageIndex" value="1">
    <input type="hidden" name="conId" value="<%=conId %>">
    <input type="hidden" name="numb1" value="<%=numb1 %>">
    <input type="hidden" name="numb2" value="<%=numb2 %>">
    <input type="hidden" id="menuId" name="menuId" value="-1">
      <table style="width:750px">
       <tr >
        <td><span >菜单名称</span></td>
        <td><input type="text" id="menu_name" class="form-control" name="menuName" style="margin:10px 0px;display:inline-block;height:34px;"/><span class="showWoring"></span></td>
       </tr>
       <!-- <tr>
        <td>菜单级别:</td>
        <td>
         <select id="menu_level" name="menu_level" style="margin:10px 0px">
          <option value="-1">请选择...</option>
          <option value="1">一级菜单</option>
          <option value="2">二级菜单</option>
         </select>
         <span class="showWoring"></span>
        </td>
       </tr>
       <tr id="menu_parent_tr" style="display: none">
        <td>父级菜单:</td>
        <td>
         <select id="menu_parent" name="menu_parent" style="margin:10px 0px">
          <option value="-1">请选择...</option>
         </select>
         <span class="showWoring"></span>
        </td>
       </tr>-->
       <tr>
        <td>菜单类型</td>
        <td>
         <select id="menuType" class="form-control" name="menuType" style="margin:10px 0px;display:inline-block;width:350px;">
          <option value="-1">请选择...</option>
          <option value="1">图文类型</option>
          <option value="2">链接类型</option>
         </select>
       </td>
       </tr>
       <tr id="imgTextTr" style="display:none">
        <td>
         图文内容
        </td>
        <td>
         <textarea rows="45" cols="70" class="form-control" name="menuContent" id="menuContent" style="display:inline-block;"></textarea>
        </td>
       </tr>
       <tr id="linkTr" style="display:none">
        <td>跳转地址</td>
        <td>请填写完整的外链地址,必须包含<span style="color:red">http://</span> 例如:http://www.baidu.com</br><input type="text" id="menuUrl" name="menuUrl" style="margin:10px 0px"/><span class="showWoring" style="margin:10px 0px"></span></td>
       </tr>
       <tr>
        <td align="center" colspan="2">
        <hr style="margin-bottom:10px;">
         <input id="menu_add" type="button" class="button" value="添 加" style="border-radius:0;width:260px;height:40px;margin:auto 50px;margin:20px"/>
        </td>
       </tr>
      </table>
     </form>
    </div>
   </div>
  </div>
  <div class="tkDiv" id="childMenu" style="display:none;z-index:12;width:650px;height:auto;margin-left:-325px;">
   <div class="tk1" id="childZ" style="width:600px;height:350px;">
    <div class="tk1_header" style="margin-top:-40px;">
     <span style="font-size: 16px;margin-left:20px;color:#FFF" id="gn_title">二级菜单</span>
     <a id="close_modal" style="width:30px;height:40px;background:url('/CHC2015/cn/images/close.png') no-repeat 0px 10px;background-size:20px;float: right;"></a>
    </div>
    <div class="tk1_content" id="registerDiv" style="width:600px;">
     <table class="data-load-2 appgrouping" width="100%" border="0"
           cellspacing="0"
           style="word-wrap: break-word; word-break: break-all;table-layout: inherit;">
           <thead>
            <tr class="first_tr">
             <th class="first" width="50" style="text-align: center">编号</th>
             <th width="200" align="center" style="text-align: center">菜单名称</th>
             <th width="160" align="center" style="text-align: center">菜单级别</th>
             <th width="80" align="center" style="text-align: center">二级菜单</th>
             <th width="80" align="center" style="text-align: center">菜单类型</th>
             <th width="80" align="center" style="text-align: center">修改</th>
             <th width="80" align="center" style="text-align: center">删除</th>
            </tr>
           </thead>
    </table>
    </div>
   </div>
  </div>
   <script type="text/javascript" src="<%=path %>/cvc/center/js/My97DatePicker/WdatePicker.js"></script>
  <script src="<%=path%>/cvc/center/js/setting.js" type="text/javascript"></script>
  <script src="<%=path%>/cvc/center/js/Validform_v5.3.2.js" type="text/javascript"></script>
  <script charset="utf-8" src="<%=path%>/train/js/prettify/kindeditor.js"></script>
  <script charset="utf-8" src="<%=path%>/train/js/prettify/lang/zh_CN.js"></script>
  <script charset="utf-8" src="<%=path%>/train/js/prettify/plugins/code/prettify.js"></script>
  <script type="text/javascript" src="<%=path %>/cvc/center/js/jquery-1.10.2.min.js"></script>
  <script charset="utf-8" type="text/javascript" src="<%=path %>/center/js/jquery-ui.min.js"></script>
 <script>
 var editor1;
 //改变菜单显示隐藏状态
 function changeMenuState(menuName,menuId,state){
  /*
  if(menuName == "征文投稿"){
   alert("请到基本信息模块中设置当前大会是否征文");
  }else */if(menuName == "English"){
   alert("请到基本信息模块中设置当前大会的中英文类型");
  }else{
   $.ajax({
    url:"/webCenter.do",
    type:"post",
    dataType:"json",
    data:"method=changeMenuState&menuId="+menuId+"&menuState="+state,
    success:function(json){
     if(json.state == 1){
      window.location.reload();
     }else{
      alert("修改失败");
     }
    }
   })
  }
 }

  $("#showTable").sortable({
   cursor: "move",
   items: "tr", //只是tr可以拖动
   opacity: 0.6, //拖动时,透明度为0.6
   revert: true, //释放时,增加动画
   stop: function(event, ui) { //更新排序之后
    var categoryids = $("#showTable").sortable("toArray");
    localStorage.categoryids = categoryids;
    var level = 0;
    $("#showTable tr").each(function(){
     $(this).children("td").eq(0).html(level);
     level += 1;
    })
    level = 0;
    var content = "[";
    $("#showTable tr").each(function(){
     var level = $(this).children("td").eq(0).html();
     var tdId = $(this).children("td").eq(0).attr("id");
     if(tdId != undefined){
      if(level == 1){
       content += "{level:"+level;
       content += ",menuId:"+tdId;
       content += "}";
      }else if(level > 1){
       content += ",{level:"+level;
       content += ",menuId:"+tdId;
       content += "}";
      }

     }
     level += 1;
    })
    content += "]";
    $.ajax({
     url:"<%=path%>/webCenter.do?updateMenuLevel",
     type:"post",
     dataType:"json",
     data:"menuList="+content,
     success:function(json){
     }
    })
   }
  });
  $("#showTable").disableSelection();//让文字不可选
   //选择二级菜单
   $("#menu_level").change(function(){
    $("#menu_parent").empty();
    $("#menu_parent").append("<option value='-1'>请选择...</option>")
    var level = $("#menu_level").val();
    if(level == 1){
     $("#menu_parent_tr").hide();
    }else if(level == 2){
     $.ajax({
      url:"<%=path%>/webCenter.do?getFirstMenu",
      type:"GET",
      dataType:"json",
      success:function(result){
       if(result != null && result != "" && result.length > 0){
        for(var i = 0; i< result.length;i++){
         var option = "<option value='"+result[i].menuId+"'>"+result[i].menuName+"</option>"
         console.log(option)
         $("#menu_parent").append(option);
        }
       }else{
        alert("还未创建任何一级菜单,先创建一级菜单后再创建耳机菜单");
       }
      }
     })
     $("#menu_parent_tr").show();
    }
   })

   //选择图文类型
   $("#menuType").change(function(){
    if($("#menuType").val() == 1){
     $("#imgTextTr").show();
     $("#linkTr").hide();
     $("#addZ").css("height","450px")
    }else if($("#menuType").val() == 2){
     $("#imgTextTr").hide();
     $("#linkTr").show();
     $("#addZ").css("height","180px")
    }
   })
  //添加
  $("#menu_add").click(function() {
   var menuName = $("#menu_name").val();
   var menuLevel = $("#menu_level").val();
   var menuType = $("#menuType").val();
   var menuUrl = $("#menuUrl").val();
   if(menuName.trim() == "" || menuName.trim().length == 0){
    alert("请输入菜单名称");
    return false;
   }
   if(menuType == "-1"){
    alert("请选择菜单类型");
    return false;
   }
   if($("#menuType").val() == 1){
    if($("#menuContent").val().trim() == "" || $("#menuContent").val().trim().length == 0){
     alert("请填写图文内容");
     return false;
    }
   }
   if($("#menuType").val() == 2){
    if(menuUrl.trim() == "" || menuUrl.trim().length == 0){
     alert("请输入跳转地址");
     return false;
    }
   }
   var menuCount = <%=menuListSize%>;
   if(menuCount >= 19 && $("#menuId").val() == -1){
    alert("菜单最多只能添加九个");
    return false;
   }

   $("#menuForm").submit();
   $("#mask").hide();
   $("#addLOGO").hide();
   $("body").css("position", "fixed");
  })
  //弹出窗口
  $("#addLG").click(function() {
   $("#mask").show();
   $("#addLOGO").show();
   })
  //取消
  $(".tk1_header").click(function() {
    location.reload();
  })
  $("#close").click(function() {
   $("#zsType").val(0);
   $("#zsHref").val("");
   $("#mask").hide();
   $("#addLOGO").hide();
   $("body").css("position", "static");
  })
  //修改
  $(".mer_mod").click(function() {
   $("#mask").show();
   $("#addLOGO").show();
   $("body").css("position", "fixed");
   $("#menuId").val(this.id);
   $.ajax({
    url:"<%=path%>/webCenter.do?getMenuById",
    type:"get",
    data:"menuId="+this.id,
    dataType:"json",
    success:function(data){
     $("#menu_name").val(data.menuName);
     $("#menuType").val(data.menuType);
     if(data.menuType == 1){
      $("#imgTextTr").show();
       $("#linkTr").hide();
       $("#addZ").css("height","450px")
       editor1.html(data.content);
     }if(data.menuType == 2){
      $("#imgTextTr").hide();
       $("#linkTr").show();
       $("#addZ").css("height","80px")
     }
    }

   })
  })</script>
 </body>
</html>
<%
 }
}
%>

action代码

@RequestMapping(params = "updateMenuLevel",method = RequestMethod.POST)
  public void updateMenuLevel(String menuList,HttpServletRequest request,HttpServletResponse response){
    try {
      HttpSession session = this.getSession(request);
      Adminuser adminUser = session.getAttribute("centerAdminUser") == null?null:(Adminuser) session.getAttribute("centerAdminUser");
      if(adminUser == null){
        try {
          response.sendRedirect(request.getContextPath()+"/center/index.jsp");
        } catch (Exception e) {
          e.printStackTrace();
        }
      }else{
        String conId = request.getSession().getAttribute("conId") == null ? null: request.getSession().getAttribute("conId").toString();
        if (conId == null) {
          response.sendRedirect(request.getContextPath()+"/center/index.jsp");
        }
        JSONArray array = JSONArray.fromObject(menuList);
        for(int i = 0;i < array.size();i++){
          JSONObject json = array.getJSONObject(i);
          Menu menu = webService.getMenuById(json.getInt("menuId"));
          menu.setLevel(json.getInt("level"));
          webService.saveObject(menu);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

以上这篇java实现表格tr拖动的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文章:

  • javascript 拖动表格行实现代码
  • javascript实现行拖动的方法
  • JS实现的表格行上下移动操作示例
(0)

相关推荐

  • javascript实现行拖动的方法

    本文实例讲述了javascript实现行拖动的方法.分享给大家供大家参考.具体如下: <!doctype html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>行拖动</title> <script> window.onload = functi

  • javascript 拖动表格行实现代码

    行拖动的实现思路非常简单,选中一行,往上拖就与上面的行交换位置,往下拖就与下面的行交换位置.问题是如何得到交换行.我见过一个非常详细的教程,它会把表格里的每一行的高度与Y坐标计算出来,换言之,都时是比较e.pageX是否在[rowTop,rowBottom]区间之内.但这也带来第二个问题,有多少行就有多个这样的区间.于是解法就变成取事件源对象,然后再往上取其父对象,如果其父对象是TR元素,就取其[rowTop,rowBottom]区间....思路非常直接,同时也客观做出一个限制--不能使用代理拖

  • JS实现的表格行上下移动操作示例

    本文实例讲述了JS实现表格行上下移动操作的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <he

  • java实现表格tr拖动的实例(分享)

    实现功能:实现表格tr拖动,并保存因为拖动改变的等级. jsp代码 <div id="mainContainer"> <div class="contentCol"> <div id="b_center"> <div class="mod mod1 parent-table" id="launch-detail-table"> <div class=&q

  • Java生产1-100的随机数简单实例(分享)

    直接调用Math里面的random即可,简单方便 int i = (int)(Math.random()*100+1); 以上这篇Java生产1-100的随机数简单实例(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • java留言管理系统中模糊查询实例分享

    本文分享了一个基于MVC+DAO的留言管理系统,包含增删改查,其中查询,有全部查询和按关键字进行模糊查询的功能,具体内容如下 NoteDAO.Java package cn.mldn.lxh.note.dao ; import java.util.* ; import cn.mldn.lxh.note.vo.* ; public interface NoteDAO { // 增加操作 public void insert(Note note) throws Exception ; // 修改操作

  • 通过代理类实现java连接数据库(使用dao层操作数据)实例分享

    首先,我们在一个java文件中定义要存储的结构类型: 复制代码 代码如下: import java.util.Date ;/** * * @author Nero */public class Emp {    private int empno ;    private String ename ;    private String job ;    private Date hiredate ;    private float sal ;    public void setEmpno(

  • java中vector与hashtable操作实例分享

    众所周知,java中vector与hashtable是线程安全的,主要是java对两者的操作都加上了synchronized,也就是上锁了.因此 在vector与hashtable的操作是不会出现问题.但是有一种情况:就是将一个hashtable copy到另一个hashtable时,假如使用putAll方法的花,会抛出一个 java.util.ConcurrentModificationException异常.先上代码: TestSync.java 复制代码 代码如下: public clas

  • java dom4j解析xml文件代码实例分享

    解析xml文件有两种方式,一种是利用Dom去解析,这种方式写起代码比较麻烦,对于刚入手的程序员来说比较容易出问题:第二种就是使用Dom4j包去解析在要使用Dom4j包的时候,肯定要先引入包 复制代码 代码如下: import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;import java.util.Iterator; import org.dom4j.Docum

  • jQuery+ajax实现动态添加表格tr td功能示例

    本文实例讲述了jQuery+ajax实现动态添加表格tr td功能.分享给大家供大家参考,具体如下: 功能:ajax获取后台返回数据给table动态添加tr/td html部分: <table> <tbody></tbody> </table> ajax部分: var year = $('#year').val();//下拉框数据 var province= $('#province').val();//下拉框数据 $('table tbody').html

  • Java Servlet简单实例分享(文件上传下载demo)

    项目结构 src com servletdemo DownloadServlet.java ShowServlet.java UploadServlet.java WebContent jsp servlet download.html fileupload.jsp input.jsp WEB-INF lib commons-fileupload-1.3.1.jar commons-io-2.4.jar 1.简单实例 ShowServlet.java package com.servletdem

  • Java编程BigDecimal用法实例分享

    Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是针对大整数的处理类,而 BigDecimal 类则是针对大小数的处理类. BigDecimal 类的实现用到了 BigInteger类,不同的是 BigDecimal 加入了小数的概念. float和Double只能用来做科学计算或者是工程计算;在商业计算中,对数字精度要求较高,必须使用 BigIn

  • java date类与string类实例代码分享

    Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclonggetTime() 返回自新世纪以来的毫秒数,可以用于时间计算. [例3.10]测试执行循环花费的时间(数量级为毫秒),具体时间情况如图3.9所示.源程序代码如下: //程序文件名为UseDate.java import java.util.Date; public class UseDate { pu

随机推荐