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

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同