`
田梦桦
  • 浏览: 19056 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

web列表拖拽排序的实现

 
阅读更多

        最近用到了网页里面表格的每条数据拖拽排序,具体实现原理如下:

 

        前台实现方法,这里主要用到了jquery的拖拽排序组件,比如jqGrid(http://www.trirand.com/blog/),sortable(http://jqueryui.com/sortable/),前台封装的组件用的都是很简单的,在这里就不多总结了,如果想深入研究拖拽的js实现原理,可以查看源码。

 

        后台设计,表中有个rank字段控制排序,每次找最大的一个+1。

 

        当前台列表展示的时候。

        将rank字段的附带着在每一个行:

                    如下:(<input type="hidden" value="${shpvo.rank " />" name="rnk"/>

        本页的默认序列号放入一个数组中:

                   如下:

                        var seqlst= [];

                        $("input[name='rnk']").each(function(idx){

                                 seqlst.push($("input[name='rnk']").eq(idx).val());

                         })

                         $("#seqlst").val(seqlst.toString());   

 

           当执行拖拽排序的时候,每行存的id并不发生变化,但是从第一行到最后一行依次id顺序重新组成一个新的数组:

                         var ids = [];

                         for(var i = 0 , l = $("#ectableArea .zzp-table01-body tbody tr").length;i<l;i++){

                                   ids.push($("#ectableArea .zzp-table01-body tbody tr:eq(" + i + ")").find(".checkbox").attr("id"));

                          }

 

          以上两步就得到给后台传递的id数组和序号数组:执行ajax和后台交互:

                     $.ajax({

                           type: "POST",

                           url: "${ctx}/ship.do?method=savePageContentSort",

                          data:{"ids":ids.toString(),"sequence":seq.toString()},

                          dataType: "text",

                          timeout :5000,

                          cache :false,

                          async: true,

                          success: function(data){}

                   })

 

                 最后后台处理更新rank,简写实现代码如下:

                  String[] idList=ids.split(",");

                  String[] seqList=sequence.split(",");

                  List<OmShipTypeDO> list=new ArrayList<OmShipTypeDO>();

                  for(int i=0;i<idList.length;i++){

                        OmShipTypeDO obj=shipTypeDao.findById(Integer.parseInt(idList[i]));

                        //id对应的rank进行重置

                       obj.setRank(Byte.parseByte(seqList[i]));

                       list.add(obj);

                  }

                  shipTypeDao.saveOrUpdateAll(lst);

              以上的代码前台后台的写法都是简写,只是为了简易的说明拖拽排序的前台后台交互实现原理。

      

       

 

分享到:
评论
1 楼 kely39 2013-05-31  
不错,顺便把demo也分享下

相关推荐

    移动端列表长按上下拖动排序

    "移动端列表长按上下拖动排序"是一种提升用户体验的功能,允许用户通过简单的手势操作来调整列表项的顺序,使得信息管理更加直观和便捷。这个功能主要利用了HTML5的sortTable技术和触摸事件来实现,专门针对移动设备...

    web中拖拽排序和java后台交互实现方法示例

    Web 中拖拽排序和 Java 后台交互实现方法示例 本文主要介绍了 Web 中拖拽排序和 Java 后台交互实现的相关知识点,通过示例代码详细介绍了如何实现拖拽排序和 Java 后台交互。 一、业务需求 在 Web 中,为了实现...

    列表拖动排序

    在ReactJS中,实现列表的拖动排序是一项常见的交互需求,它可以提升用户界面的易用性和体验。React作为一款强大的JavaScript库,通过组件化的方式处理UI逻辑,使得实现这种功能变得相对简单。以下是对"列表拖动排序...

    jqeury实现列表拖拽排序

    ### 使用jQuery实现列表拖拽排序 在Web应用中,用户交互体验越来越被重视,而拖拽排序作为一种直观、便捷的数据管理方式,在很多场景下都有广泛的应用。本文将详细介绍如何使用jQuery来实现列表拖拽排序,并确保...

    React-基于react的拖拽并自动排序

    在React开发中,实现一个可排序列表是一个常见的需求,尤其在构建交互性强的Web应用时。这个主题,"React-基于react的拖拽并自动排序",涉及到的主要知识点包括React组件化开发、事件处理、状态管理和第三方库的使用...

    图片上传+拖动排序(vue2+elementUI+vuedraggable)

    在这个组件中,我们需要定义数据属性来存储图片列表、处理上传事件以及实现拖动排序的逻辑。 4. **图片上传** 使用ElementUI的`el-upload`组件来实现图片上传。设置`action`属性指向图片上传的服务器接口,`on-...

    jQuery批量图片拖动排序和查看

    拖动排序是通过jQuery UI库中的`draggable()`和`droppable()`方法实现的。`draggable()`使元素可拖动,而`droppable()`定义了接收拖动元素的目标区域。在这个应用中,用户可以选取多张图片并进行拖动,以改变图片...

    可对列表自由拖拽排序的jQuery插件.zip

    总的来说,dragslot.js插件为开发人员提供了一种简单而有效的方式来实现列表的拖拽排序功能,使得Web应用更具互动性和用户友好性。对于希望提升用户体验的开发者来说,这是一个值得尝试的工具。

    Web 前端拖拽实现实例分析

    本文将深入探讨如何在Web前端实现拖放功能,通过实例分析不同实现方式的优缺点,帮助开发者选择最适合项目需求的解决方案。 首先,让我们了解拖放的基本原理。拖放功能涉及两个主要事件:`dragstart`、`drag`、`...

    jQuery可拖拽排序的列表代码.zip

    本资源“jQuery可拖拽排序的列表代码.zip”提供了实现列表元素可拖拽排序的功能,这在构建交互性强的Web应用时非常实用。这个jQuery插件允许用户通过鼠标直接拖动列表项,轻松改变它们的顺序,从而提高用户体验。 ...

    移动端和pc端拖动排序

    在拖动排序的实现中,这些事件会被绑定到列表项上,以便在用户开始拖动、拖动中和结束拖动时执行相应的操作。 实现过程中,开发者需要考虑以下几点: 1. **元素拖动开始**:当`touchstart`或`mousedown`事件触发时...

    php接口实现拖拽排序功能

    在Web应用开发中,拖拽排序是一项用户友好的功能,它允许用户通过直观的拖拽操作来重新排序列表项。在后端,这一功能需要通过相应的接口来实现数据的排序变更。本篇将详细讲解如何使用PHP语言实现拖拽排序功能的后端...

    多列拖拽排序智能滚动

    "多列拖拽排序智能滚动"是一种提升用户体验的技术,它允许用户通过拖放操作对多列数据进行排序,同时在拖动过程中,如果接近屏幕边缘,页面会自动滚动,确保用户能持续看到可操作区域。这个功能的实现主要依赖于...

    js拖拽排序并保存到数据库

    拖拽排序允许用户通过直观地拖动元素来改变它们的顺序,这种功能在各种Web应用中非常常见,比如任务管理器、图片库等。结合PHP作为后端语言处理数据并保存到数据库,可以实现完整的拖拽排序解决方案。 首先,我们...

    jquery图片拖拽排序

    在Web开发中,用户交互是提升用户体验的关键因素之一,而图片拖拽排序功能能够使用户更加直观、便捷地管理图片列表。本篇将深入探讨如何利用jQuery实现图片的拖拽排序功能,以及解决滚动条出现后定位不准的常见问题...

    jQuery实现拖动布局并将排序结果保存到数据库

    总结来说,这个项目通过`jQuery`实现了用户友好的拖动排序功能,利用`idrag.js`插件简化了拖放操作的实现。当用户完成排序后,通过AJAX将新的布局信息发送到服务器,并使用`PHP`更新数据库,确保布局的更改能够持久...

    鼠标拖动排序

    例如,可以创建一个名为`SortableList`的自定义组件,接受一个列表数据,并自动处理拖动排序的逻辑。 压缩包中的`move`文件可能是实现鼠标拖动排序功能的源代码或示例。通过查看和学习这个文件,你可以更具体地了解...

    jquery - 1.4.2 图片拖拽排序实例

    本实例主要关注的是使用jQuery 1.4.2版本实现的图片拖拽排序功能,这在创建图集、画廊或任何需要动态调整顺序的项目中非常实用。 首先,要理解拖拽排序的基本原理。拖拽排序涉及两个主要技术:事件监听和DOM操作。...

    jquery拖拽排序

    1. **选择元素**:首先,我们需要选择要实现拖拽排序的元素,可以使用CSS选择器,如`$("#list li")`选择列表项。 2. **设置可拖动**:然后为这些元素添加`draggable`属性,`$(".dragItem").draggable();`,设置拖动...

    针对后台列表table拖拽比较实用的jquery拖动排序

    通过上述知识点的介绍,我们可以了解到实现后台列表表格拖拽排序的完整过程。首先需要准备 HTML 结构并应用适当的 CSS 样式,接着利用 jQuery 以及 jQuery UI 提供的 Sortable 方法进行初始化设置,最终通过回调函数...

Global site tag (gtag.js) - Google Analytics