asp.net Repeater拖拽实现排序并同步排序字段到数据库中

2024-03-17 12:18

本文主要是介绍asp.net Repeater拖拽实现排序并同步排序字段到数据库中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      数据库表中有一个单位表,里面包括ID、Name、Order等字段,现在有个后台管理功能,可以设置这些单位在某些统计表格中的先后显示顺序,于是想到用拖拽方式实现,这样操作起来更简便。

     使用了GifCam软件做了一个示例动画,效果如下图所示:

                              

      于是就动手起来,发现jquery.ui中提供sortable函数,可用于排序,界面中从数据库绑定的单位使用Repeater控件,下面简单介绍下主要步骤:

1、项目中使用到的jquery-1.7.2.min.jsjquery-ui.min.js请点击进行下载,地址为:http://download.csdn.net/detail/taomanman/9315373


2、TestDemo.aspx代码如下:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script src="../../Scripts/jquery-1.7.2.min.js"></script><script src="../../Scripts/jquery-ui.min.js"></script><title>Repeater拖拽排序</title><style type="text/css">#module_list {margin-left: 4px;}.modules {float: left;width: 200px;height: 140px;margin: 10px;border: 1px solid #acc6e9;background: #e8f5fe;}.m_title {margin-top: 0px;height: 24px;line-height: 24px;background: #afc6e9;}#loader {height: 24px;text-align: center;}</style>
</head>
<body><form id="form1" runat="server"><div id="loader"></div><div id="module_list"><input type="hidden" id="orderlist" /><asp:Repeater ID="rpt" runat="server"><ItemTemplate><div class="modules" title='<%#Eval("F_DataCenterID") %>'><h3 class="m_title"><%#Eval("F_DataCenterName").ToString() %></h3><p><%#Eval("F_Order") %></p></div></ItemTemplate></asp:Repeater></div></form>
</body>
</html><script type="text/javascript">$(function () {$(".m_title").bind('mouseover', function () {$(this).css("cursor", "move")});var show = $("#loader");var orderlist = $("#orderlist");var list = $("#module_list");var old_order = [];//获取原先的顺序列表list.children(".modules").each(function () {var val = $(this).find("p").text();old_order.push(val);});list.sortable({opacity: 0.6, //设置拖动时候的透明度 revert: true, //缓冲效果 cursor: 'move', //拖动的时候鼠标样式 handle: '.m_title',  //可以拖动的部位,模块的标题部分 update: function () {var new_id = [];list.children(".modules").each(function () {new_id.push(this.title);});var newid = new_id.join(',');var oldid = old_order.join(',');$.ajax({type: "post",url: "update.aspx", //服务端处理程序 data: { id: newid, order: oldid },   //id:新的排列对应的ID,order:原排列顺序 beforeSend: function () {show.html("<img src='load.gif' /> 正在更新...");},success: function (msg) {show.html("排序成功...");//重新刷新页面window.location.reload();}});}});});
</script>

TestDemo.cs代码如下,具体数据库操作类获取数据根据各自的情况进行,这里就不详细介绍了。

    public partial class TestDemo : System.Web.UI.Page{public static GGJ_DC_DataCenterBaseInfoBLL bll = new GGJ_DC_DataCenterBaseInfoBLL();protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){BindData();}}/// <summary>/// 绑定部委单位/// </summary>public void BindData(){string where = "";string orderby = "F_Order ASC";DataTable dt = bll.GetData(where, orderby);this.rpt.DataSource = dt;this.rpt.DataBind();}}

3、$.ajax方法请求的页面update.aspx及update.aspx.cs代码如下:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title>
</head>
<body><form id="form1" runat="server"><div></div></form>
</body>
</html>

    public partial class update : System.Web.UI.Page{public static GGJ_DC_DataCenterBaseInfoBLL bll = new GGJ_DC_DataCenterBaseInfoBLL();protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){string order = Request["order"].ToString();string depId = Request["id"].ToString();UpdateOrder(depId, order);}}/// <summary>/// 重新更新顺序/// </summary>/// <param name="deptId"></param>/// <param name="order"></param>public void UpdateOrder(string deptId, string order){string[] deptIds = deptId.Split(',');string[] orders = order.Split(',');for (int i = 0; i < deptIds.Length; i++){for (int j = 0; j < orders.Length; j++){if (i == j){string sql = "update GGJ_DC_DataCenterBaseInfo set F_Order=" + orders[j] + " where F_DataCenterID='" + deptIds[i]+ "'";DataTable dt = CommonClass.QuerySQL.GetDataTable(sql);if (dt.Rows.Count > 0){}}}}}}

===========================================================================

如果觉得对您有帮助,微信扫一扫支持一下:



这篇关于asp.net Repeater拖拽实现排序并同步排序字段到数据库中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818928

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实