实现功能:js实现表格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">&nbsp;&nbsp;&nbsp;添加菜单</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)" 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)" 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)" 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="#">关于我们</a> |
<a href="#">微博</a> |
<a href="#">Blog</a> |
<a href="#">服务条款 </a> |
<a href="#">隐私政策</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;">&times;</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>&nbsp;例如: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拖动的更多相关文章

  1. 关于html中table表格tr,td的高度和宽度

    关于html中table表格tr,td的高度和宽度 关于html中table表格tr,td的高度和宽度 做网页的时候经常会遇到各种各样的问题,经常遇到的一个就是会碰到表格宽度对不齐的问题.首先,来分析 ...

  2. Java 处理表格,真的很爽!

    一个简单又快速的表格处理库 大家好,我是鱼皮. 处理 Excel 表格是开发中经常遇到的需求,比如表格合并.筛选表格中的某些行列.修改单元格数据等. 今天给大家分享一个 Java 处理表格的工具库,不 ...

  3. java layout 表格项增加、删除、修改

    实现的内容为:点击表格某项,再点击删除钮,可实现删除点击表格某项,再点击编辑按钮,可实现内容改变点击添加按钮,可实现向表格中添加内容 总结:总的来说中间遇到了很多困难,但是都一步步的解决了. pack ...

  4. Java 获取表格中某一个单元格的值

    需求 搜索页面返回表格样搜索结果, 获取搜索结果中某个单元格的具体值. 以下图为例, 下表是搜索返回的结果, 第一行是各个列的名字, 其它是具体的返回值. 方法1: 根据用户输入的表头名来确定是第几列 ...

  5. java画图之曲线拖动

    目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...

  6. Java JTable 表格 获取存储路径,文件名 ,导出excel表格

    在做计量泵上位机软件时,需要将下位机传上来的数据,存入MYSQL数据库,显示在java 上位机界面上,并能导出至电脑指定位置. 选择存储路径和文件名: // 处理另存文件的菜单 public void ...

  7. 原生JS表格行拖动排序,添加了回调功能

    function tableDnD(el, callback) { if (typeof (el) == "string") { el = document.getElementB ...

  8. JAVA导入表格功能总结

    表格结构: SheetName:sheet名称(辅材采购申请单) RowNum:行数 FirstCellNum/LastCellNum:第一竖列/最后一竖列(从0开始),例:getCell(0) = ...

  9. 可以让表格变为拖动边界调整列宽度的JS办法

    需要引入文件: jquery.resizableColumns.min.js 和 jquery.resizableColumns.css 代码如下: $(".tableclass" ...

随机推荐

  1. 绑定方法与非绑定方法 classmethod和staticmethod

    一:绑定方法:特点:绑定给谁就应该是由谁来调用,谁来调用就会将谁当做第一个参数传入 1:绑定给对象的方法:类中定义的函数默认就是绑定给对象的 例:        2:绑定给类的方法:为类中定义的函数加 ...

  2. SAM文件格式

    帮朋友处理sam各式文件,又记不住sam各式每列代表的什么内容,干脆转个帖子留着以后查询. 在SAM输出的结果中每一行都包括十二项通过Tab分隔,从左到右分别是: 1 序列的名字 2 概括出一个合适的 ...

  3. Android24以上拍照代码

    public void takePic(){ //创建File对象,用于存储拍照后的照片 File outputImage = new File(getExternalCacheDir()," ...

  4. 『PyTorch』第五弹_深入理解Tensor对象_中下:数学计算以及numpy比较_&_广播原理简介

    一.简单数学操作 1.逐元素操作 t.clamp(a,min=2,max=4)近似于tf.clip_by_value(A, min, max),修剪值域. a = t.arange(0,6).view ...

  5. Java实现类似eval()函数或exec()函数的功能

    一篇参考博客:http://www.cnblogs.com/fangwenyu/archive/2011/10/12/2209051.html 在Python中有一个exec()函数,同样在JavaS ...

  6. 八大排序算法——选择排序(动图演示 思路分析 实例代码Java 复杂度分析)

    一.动图演示 二.思路分析 1.  第一个跟后面的所有数相比,如果小于(或小于)第一个数的时候,暂存较小数的下标,第一趟结束后,将第一个数,与暂存的那个最小数进行交换,第一个数就是最小(或最大的数) ...

  7. js获取子元素的内容

    <div class="aaa1"> <div class="">123</div> <span>2222< ...

  8. sass compass config.rb

    require 'compass/import-once/activate' # Require any additional compass plugins here. # Set this to ...

  9. Linux 搭建Hadoop集群 ----workcount案例

    在 Linux搭建集群---JDK配置 Linux搭建集群---SSH免密登陆 Linux搭建集群---集群搭建成功 的基础上实现workcount案例 注意 虚拟机三台启动集群(自己亲自搭建) 1. ...

  10. np.newaxis

    http://blog.csdn.net/mameng1/article/details/54599306