jQuery实现表格拖动排序
原理就是利用mousedown、mouseover、mouseup事件实现拖动,并用Ajax实现保存结果。
JS代码如下:
<!--题目调序功能-->
<script type="text/javascript">
var moveStart = false; //是否开始移动
var curTr; //待移动的tr
var tarTr; //目标tr _run(function () {
//鼠标按下
$("#tableDataList").find("tr").find("td:not(:last)").mousedown(function () {
moveStart = true;
curTr = $(this).parent();
curTr.find("td").addClass("highlightTd");
curTr.addClass("pointer");
}); //鼠标移入
$("#tableDataList").find("tr").mouseover(function () {
var ch = "input[type='checkbox']";
if (moveStart == true && curTr.find(ch).attr("subid") != $(this).find(ch).attr("subid")) {
if (curTr.offset().top > $(this).offset().top) { //上移
tarTr = $(this);
tarTr.focus();
tarTr.before(curTr);
}
else { //下移
tarTr = $(this);
tarTr.focus();
tarTr.after(curTr);
}
}
}); //鼠标移出
$("#tableDataList").find("tr").mouseup(function () {
if (moveStart == true) {
moveStart = false;
curTr.find("td").removeClass("highlightTd");
curTr.removeClass("pointer"); var subjectIds = ""; //存储ID集合
$("#tableDataList").find("input[type='checkbox'][id!='checkAll']").each(function () {
subjectIds += $(this).attr("subId") + ",";
});
if (subjectIds != "") {
//Ajax请求保存数据
$.ajax({
type: "POST",
url: "#{ChangeSubjectsSortUrl}",
data: "subjectIds=" + subjectIds.substr(0, subjectIds.length - 1), //传参
success: function (data) {
if (data == "ok") {
var i = 0;
$("#tableDataList").find("tr:not(:first)").each(function () {
i++;
$(this).find("td:eq(3)").html(i); //更新题目序号显示
});
}
}
});
}
}
});
});
</script>
HTML代码如下(说明:框架会自动把<!-- BEGIN list -->和<!-- END list -->之间的内容绑定为列表):
<div class="Activity_Select_Index_Con">
<b class="Activity_Select_Index_Title">题目 <a href="#{viewAllLink}" title="预览所有题目"
class="frmBox">
<img src="~img/edit.gif" />预览问卷</a> <a href="#{addLink}" title="添加题目" class="frmLink"
loadto="divEdit" nolayout="999">
<img src="~img/add.gif" />添加</a> <a href="javascript:void(0);" onclick="batchDeleteClick()">
<img src="~img/delete.gif" />
删除</a></b>
<div class="SIMPO_Table" style="width: 100%">
<table id="tableDataList" border="0" cellspacing="0" cellpadding="0" style="-moz-user-select: none;"
onselectstart="javascript:return false;">
<tr>
<th width="36">
<input type="checkbox" name="checkbox" id="checkAll" onclick="checkAllClick(this)" />
</th>
<th width="131">
<b>题目名称</b>
</th>
<th width="131">
<b>题目类型</b>
</th>
<th width="114">
<b>题目顺序</b>
</th>
<th width="114">
<b>题目分值</b>
</th>
<th width="100" align="center">
<b>操作</b>
</th>
</tr>
<!-- BEGIN list -->
<tr>
<td align="center" valign="middle">
<input type="checkbox" name="checkbox" id="checkbox" subid="#{edu_QnSubject.Id}" />
</td>
<td align="center" valign="middle">
<a href="#{PreviewItemLink}" class="SIMPO_Table_Name frmBox">#{edu_QnSubject.Title}</a>
</td>
<td align="center" valign="middle">
#{edu_QnSubject.TypeId}
</td>
<td align="center" valign="middle">
#{edu_QnSubject.Sort}
</td>
<td align="center" valign="middle">
#{edu_QnSubject.Score}
</td>
<td align="center" valign="middle">
<a href="#{edu_QnSubject.EditLink}" title="修改题目" class="frmLink" loadto="divEdit"
nolayout="999">
<img src="~img/edit.gif" />修改</a> <a href="javascript:void(0)" onclick="delSubject(this)">
<img src="~img/delete.gif" />删除</a>
<form name="frmDelete" method="post" action="#{edu_QnSubject.DeleteLink}">
<input type="hidden" name="templateId" value="#{templateId}" />
</form>
</td>
</tr>
<!-- END list -->
</table>
</div>
</div>
Controller代码如下:
/// <summary>
/// 调整题目顺序
/// </summary>
public void ChangeSubjectsSort(int templateId)
{
string subjectIds = ctx.Post("subjectIds");
string[] subjectIdArray = subjectIds.Split(',');
for (int i = ; i < subjectIdArray.Length; i++)
{
Edu_QnSubject qnSubject = edu_QnSubjectService.findById<Edu_QnSubject>(int.Parse(subjectIdArray[i]));
qnSubject.Sort = i + ;
Result result = edu_QnSubjectService.update(qnSubject); //保存
}
echoText("ok");
}
效果图(静态图片看不到动态效果,这里示意一下):

jQuery实现表格拖动排序的更多相关文章
- JQuery对表格进行排序
添加相关jar <script type="text/javascript" src="jquery-1.1.3.pack.js"></scr ...
- jquery 鼠标拖动排序Li或Table
1.前端页面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="拖动排序Li或Ta ...
- JQuery 表格拖动调整列宽效果
类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放开鼠标,表格列宽会被调整.最近比较空闲,便自己动 ...
- jQuery html表格排序插件:tablesorter
ablesort是一款很好用的jQuery表格排序插件. 支持多种数据类型排序,会自动识别表格内容数据类型,使用也非常方便. 使用jQuery tablesort实现html表格方法: 1. 下载jQ ...
- jQuery可拖拽排序列表jquery-sortable-lists
jquery-sortable-lists可以通过鼠标进行拖动排列树型菜单,可以定义某个列表元素是否拖动,拖动后回调,点击可以折叠树型结点,可以用来在后台模仿wordpress后台拖动菜单,实现多级菜 ...
- 锋利的jQuery-7--query ui效果库--拖动排序插件sortable
一个简单的拖动排序效果,具体请参看jQuery ui官网demo. jquery ui :http://jqueryui.com/ sortable例子:http://jqueryui.com/sor ...
- jQuery实现表格行上移下移和置顶
jQuery实现表格行上移下移和置顶 我们在操作列表数据的时候,需要将数据行排列顺序进行调整,如上移和下移行,将行数据置顶等,这些操作都可以在前端通过点击按钮来完成,并且伴随着简单的动态效果,轻松实现 ...
- IOS UITableView拖动排序功能
UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序. 排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单 ...
- jQuery 选择表格(table)里的行和列及改变简单样式
本文只是介绍如何用jQuery语句对表格中行和列进行选择以及一些简单样式改变,希望它可以对jQuery表格处理的深层学习提供一些帮助jQuery对表格(table)的处理提供了相当强大的功能,比如说对 ...
随机推荐
- Linux所有者和组
组 添加组 groupadd 组名 查看所有组 cat /etc/group 添加成员useradd -g 组名 用户名 查看成员 cat /etc/passwd 查看用户权限 ls -l d rw ...
- 实现打印级别且带图片的Excel 方案
导出二维数据excel,其实很简单,使用cvs就可以了.但是如果导出格式复杂带样式还带图片的怎么办?客户的要求有时就是这么变态.呵呵.如果使用.net,微软提供的有库,使用php好像也有现成的有库.我 ...
- Oracle-ARCGIS-SDE 数据整合遇到的问题
一. 近日在做全文检索,基础采用oracle text,版本是10g,做好管理页面后,有功能是删除索引,就是生成drop index的语句.没有想到这个全文检索的index这么直接弄还不行,经过这样删 ...
- Jenkins:”ResourceRules.plist: cannot read resources” error after Xcode 6.1
在 Custom xcodebuild arguments 处填入: "CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plis ...
- JS - Object and Property的删除用法
在JS中,Object和Property的删除用法: var myObject = {name:'jimmy', age:12, height:123} delete myObject["j ...
- make no mistake, we are the last line of defense.
make no mistake, we are the last line of defense.
- Ubuntu 配置AP总结
1.这个是使用别人写的一个GUI来配置,:http://hi.baidu.com/lexiangtaotao/item/5d4e87f22db132c70cd1c86f 2.使用hostapd配置:h ...
- Access“输入的表达式中含有一个无效日期值”
环境:access2003 + win7 有图有真相: 明显地看到,日期那里显示了“星期X”,问题的根源就在这里... 更改计算机的日期显示设置为不显示星期~ 方法:点击右下角的时钟-点击“更改日期和 ...
- centos下安装ZooKeeper
1.需求 安装ZooKeeper,metaQ 2.下载 http://zookeeper.apache.org/releases.html 当前stable版是zookeeper-3.4.6 3.解压 ...
- 跨域名 Cookie 传递测试
问题 我打开了 www.aaa.com 里面的一个页面(www.aaa.com/hello.php),其中这个 hello.php 里面包含一个 <img> 标签,里面的 src 来自于 ...