一、业务需求

  1,在后台的管理界面通过排序功能直接进入排序界面

  2,在排序界面能够人工的手动拖动需要排序的标题,完成对应的排序之后提交

  3,在app或者是前端就有对应的排序实现了

二、页面展示

  将整体页面效果展示出来之后如图所示(页面点击确定之后的效果是与java后台进行交互的):

三、设计思路:

  后台:如果需要将排序的结果保存到数据库,那么必须要修改数据库中对应的起码一个字段(排序的序号sort),那么后台需要至少接收的参数有sort和id两个字段。我这边采用的是将这两个字段封装到对象,并且采用集合的方式传递给后台,因为对应的修改必须是针对数据库中需要排序的所有数据的操作。当然可以根据不同的业务实施不同的排序方式

  前端:a,实现拖拽功能;b,需要能够提供实时的序列号sort和该序列号指定的id

四、前端设计:

  1,下载插件:只需点击超链接,下载drag.zip并解压,就会自动转为drag.js文件,引用即可

  2,代码实现:

    A>页面中代码:

        <!--起始的页面-->
<div class="listMain">
<div class="addData">
<ul class="dataList" id="dataList${var.ID }">
<c:forEach items="${varList }" var="movieParam" varStatus="varSatus">
<li class="dataList_Child">
<input type="hidden" class="idSort" value="${movieParam.id }" /> <!--id值-->
<p class="datali_name">${movieParam.NAME }</p> <!--页面中的9999,888,555,333的值-->
<input type="hidden" class="seqSort" /> <!--存放sort序号值的地方-->
                   </li>
</c:forEach>
</ul>
<input type="button" name="" value="新&nbsp;&nbsp;增" class="Add_listButton" onclick="addList()">
<input type="button" name="" value="排&nbsp;&nbsp;序" class="M_sort" onclick="getSortList()" >
</div>
        </div>
        <!--排序页面-->
        <div class="M_sortMain">
          <form action="movieparam/editSort.do" method="post">
  <div class="M_sortMain_wrap">
  <span class="close_M_sortMain"></span>
<div class="sortOul">
<ul class="sortOulMain"></ul>
</div>
  </div>
  <input type="submit" value="提交" class="sort_submit">
          </form>
        </div>

    B>点击排序的时候触发事件(需要能获取到当前的序号和id值):

       //点击排序:1,将当前页面装到指定的div;2,给对应的两个隐藏的input框添加name属性,便于后台接收;3,为sort的隐藏的input赋予sort序号值
      function getSortList(){
        $(".M_sortMain").css("display","block"); //遮罩页面显示
$(".sortOulMain").html($(".listMain").html()); //将当前页面装到指定的div
$("li").each(function(){
var seq_attr = 'movieParams['+$(this).index()+'].sort';
var id_attr = 'movieParams['+$(this).index()+'].id';
$(this).children(".seqSort").attr('name',seq_attr); //为序号框添加name属性
$(this).children(".seqSort").val($(this).index()) //为sort的隐藏的input赋予sort序号值
$(this).children(".idSort").attr('name',id_attr); //为id框添加name属性
})
       }

    C>拖拽效果的实现,引用了提供的drag.js

      // 排序事件中的拖拽事件
$('.sortOulMain').DDSort({
target: 'li',
floatStyle: {
'border': '1px solid #ccc',
'background-color': '#fff',
'cursor': 'move'
},
//每次拖拽完成之后都会执行的函数
up: function () {
$("li").each(function(){
$(this).children(".seqSort").val($(this).index()); //改变全新的sort隐藏的input的序号值
})
}
      });

五、后台设计: 

  后台采用的就是比较传统的SSM框架了,主要就是对接收的参数的处理:

  A>SpringMVC中只需要注意对于参数的接收必须按照指定的name对应即可(这里list集合中参数的封装就不再强调了): 

  @RequestMapping("editSeq")
  public ModelAndView editSeq(MovieParamListForm movieParamList)throws Exception{
    //判空操作这里省略了
    movieParamService.editSeq(movieParamList.getMovieParams());
  }

  B>Service层的处理省略了,主要是对movieParam中的id和sort两个字段的操作,直接跳到Mybatis:

  <update id="editSeq" parameterType="java.util.List">
<foreach collection="list" item="var" index="index" open="" close="" separator=";">
update t_params
<set>
  sort= #{var.sort}
</set>
where id= #{var.id}
</foreach>
  </update>

  C>如果这时候发现自己的SQL写的没有问题但是在执行的时候控制台还是报错了的话,那么必须要在连接数据库的时候加上这样一段代码就行了:allowMultiQueries=true 这个是在操作数据库批量修改时数据库的一个问题

web中拖拽排序与java后台交互实现的更多相关文章

  1. 如何用CropBox实现头像裁剪并与java后台交互

    如何用CropBox实现头像裁剪并与java后台交互 参考网站:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 参考: http://blo ...

  2. 微信小程序与java后台交互

    java后台使用的ssm框架,小程序连接的本地接口.跟正常的web访问没什么区别,也是后台获取url,返回json数据:只是小程序前台请求的url要带上http://localhost:80801. ...

  3. jquery拖拽排序,针对后台列表table进行拖拽排序(超实用!)

    现在很多后台列表为了方便均使用拖拽排序的功能,对列表进行随意的排序. 话不多说 ,我在网上找了一些demo,经过对比,现在把方便实用的一个demo列出来,基于jqueryUI.js 先上html代码, ...

  4. easyui页面上字段排序并与后台交互

    在开始对easyui里面页面上进行排序,感觉应该不怎么难,但是在操作的时候并没有那么简单,上网也查了很多进行排序的方法,最终总结出这个方法,供大家参考使用: 一.在easyui里面上只需 1.将要进行 ...

  5. 入门:HTML表单与Java 后台交互(复选框提交)

    仅仅给出部分关键代码: HTML form code: <form action="JavaFormTest" method="post" name=&q ...

  6. Extjs 4.2 Grid增删改及后台交互(Java)

    上次发了Easyui Datagrid的增删改查的使用学习记录后一直想整理下基于Extjs4.2的Grid学习使用记录.苦于抽不出时间,一直拖到现在.不得不说,Extjs确实很强大,新版的Neptun ...

  7. Java后台+数据库+Java web前端(新手)

    实现简单页面上对数据的增删改查:Java后台+数据库表+Jsp前端网页设计 这里做一个简单的学生课程信息管理系统,做之前一定要先有自己的思路,要不然对新手来说,很容易乱的. 另有一完整的代码可供参考, ...

  8. GridView实现拖拽排序以及数据交互

    在研究项目中的一个效果的时候,查找资料过程中发现有人有这么一种需求,就是GridView在实现拖拽排序的基础上,如果是两个GridView之间实现拖拽效果,并要实现数据交互. 一.效果图: 实现这个效 ...

  9. 简单web网页与SSM后台交互

    简单web网页与SSM后台交互 情况说明 如今,已经搭建好SSM后台开发环境,并且可以经由postman工具测试成功.现在尝试写出web前端网页,通过实现简单的提交.注册.查询功能来加深对前后端数据传 ...

随机推荐

  1. JavaScript零宽字符

    什么是零宽字符 一种不可打印的Unicode字符, 在浏览器等环境不可见, 但是真是存在, 获取字符串长度时也会占位置, 表示某一种控制功能的字符. 常见的零宽字符有哪些 零宽空格(zero-widt ...

  2. Thinkphp绕过宝塔getshell

    可以看到直接被拦了,经测试这里是敏感函数字符拦截,大部分有用的敏感函数都被拦了,这里面被拦的是phpinfo() Emmmm,怎么办呢..... 直接执行代码不行,那么就写入代码吧,用file_put ...

  3. 用Python编写水仙花数

    #找出水仙花数 def sxh(start, end): if end >= start and start >=100 and end<= 999: num=start #将num ...

  4. Mysql数据库设置权限

    这里使用cmd窗口进行权限设置. 以管理员账号连接数据库 创建数据库 create database 数据库名字 default charset=utf8; 查看用户 select user,host ...

  5. 关于Web2.0

    前言:本来是想写HTML的,发现没什么好写的,就简单写一下Web2.0好了 什么是Web 2.0: "Web 2.0 is the business revolution in the co ...

  6. 第十六周Java实验作业

    实验十六  线程技术 实验时间 2017-12-8 1.实验目的与要求 (1) 掌握线程概念: 多线程是进程执行过程中产生的多条执行线索,线程是比进程执行更小的单位. 线程不能独立存在,必须存在于进程 ...

  7. dfs 例题皇后问题

    题目描述 一个如下的 6 \times 66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列  ...

  8. 02 Python函数与模块

     • 函数是什么 print() input() format() list() lower() upper()  • 函数的定义 def 函数名(形参1,2,3)  函数体 return  • 函数 ...

  9. 使用Keras进行深度学习:(七)GRU讲解及实践

    ####欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 介绍 GRU(Gated Recurrent Unit) ...

  10. ArcGIS Desktop的安装

    1.双击ArcGIS Desktop安装目录下的Setup.exe. 2.点击“下一步”. 3.选择“我接受许可协议(A)”,点击“下一步”. 4.选择“完全安装”,点击“下一步”. 5.点击“更改” ...