一、业务需求
1,在后台的管理界面通过排序功能直接进入排序界面
2,在排序界面能够人工的手动拖动需要排序的标题,完成对应的排序之后提交
3,在app或者是前端就有对应的排序实现了
本文将详细介绍web拖拽排序和java后台交互的相关内容,下面话不多说了,来一起看看详细的介绍吧
二、页面展示
将整体页面效果展示出来之后如图所示(页面点击确定之后的效果是与java后台进行交互的):
三、设计思路:
后台:如果需要将排序的结果保存到数据库,那么必须要修改数据库中对应的起码一个字段(排序的序号sort),那么后台需要至少接收的参数有sort和id两个字段。我这边采用的是将这两个字段封装到对象,并且采用集合的方式传递给后台,因为对应的修改必须是针对数据库中需要排序的所有数据的操作。当然可以根据不同的业务实施不同的排序方式
前端:a,实现拖拽功能;b,需要能够提供实时的序列号sort和该序列号指定的id
四、前端设计:
1,下载插件:只需点击超链接,下载drag.zip并解压,就会自动转为drag.js文件,引用即可
2,代码实现:
a>页面中代码:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<!--起始的页面-->
<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="新增" class="add_listbutton" onclick="addlist()">
<input type="button" name="" value="排序" class="m_sort" onclick="getsortlist()" >
</div>
</div>
|
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<!--排序页面-->
<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
2
3
4
5
6
7
8
9
10
11
12
|
//点击排序: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
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 排序事件中的拖拽事件
$('.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集合中参数的封装就不再强调了):
|
1
2
3
4
5
|
@requestmapping("editseq")
public modelandview editseq(movieparamlistform movieparamlist)throws exception{
//判空操作这里省略了
movieparamservice.editseq(movieparamlist.getmovieparams());
}
|
b>service层的处理省略了,主要是对movieparam中的id和sort两个字段的操作,直接跳到mybatis:
|
1
2
3
4
5
6
7
8
9
|
<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 这个是在操作数据库批量修改时数据库的一个问题
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对快网idc的支持。
原文链接:https://www.cnblogs.com/bbgs-xc/p/9072327.html
相关文章
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-06-04 52
-
2025-05-25 95
-
2025-05-29 31
-
Linux curl 命令有哪些常见用法,命令行下载文件和发起网页请求的YYDS工具
2025-05-26 69 -
2025-05-25 85


