表格資料的上移與下移功能
阿新 • • 發佈:2018-12-31
【問題】:
在做專案過程中遇到這個需求,根據顯示的需要把列表資料進行上移或者下移的操作。
【分析】:
資料庫中有position這個欄位來管理板塊列表顯示的順序,那麼當需要上移時,我們需要取到比它position小的,離它最近的一條資料的position值,並把兩者進行交換即可。
當資料處於第一條資料時,不能在上移;當資料處於最後一條資料時,不能再下移。
【實現】:
Service:
Action:public void moveDown(Long id) { Forum forum=getById(id); Forum otherForum=(Forum) getSession().createQuery("from Forum f where f.position>? order by f.position desc") .setParameter(0, forum.getPosition()) .setFirstResult(0) .setMaxResults(1) .uniqueResult(); //最下面的不能下移 if(otherForum==null){ return; } //交換position的值 int temp=forum.getPosition(); forum.setPosition(otherForum.getPosition()); otherForum.setPosition(temp); //更新到資料庫中 getSession().update(forum); getSession().update(otherForum); } public void moveUp(Long id) { Forum forum=getById(id); Forum otherForum=(Forum) getSession().createQuery("from Forum f where f.position<? order by f.position asc") .setParameter(0, forum.getPosition()) .setFirstResult(0) .setMaxResults(1) .uniqueResult(); //最上面的不能上移 if(otherForum==null){ return; } //交換position的值 int temp=forum.getPosition(); forum.setPosition(otherForum.getPosition()); otherForum.setPosition(temp); //更新到資料庫中 getSession().update(forum); getSession().update(otherForum); } }
/**
* 上移
*/
public String moveUp() throws Exception{
forumManageService.moveUp(model.getId());
return "toList";
}
/**
* 下移
*/
public String moveDown() throws Exception{
forumManageService.moveDown(model.getId());
return "toList";
}
頁面顯示jsp:
【結果顯示】:<!-- 最上面的不能上移 --> <s:if test="#status.first"> <span class="disabled">上移</span> </s:if> <s:else> <s:a action="forumManage_moveUp?id=%{id}">上移</s:a> </s:else> <!-- 最下面的不能下移 --> <s:if test="#status.last"> <span class="disabled">下移</span> </s:if> <s:else> <s:a action="forumManage_moveDown?id=%{id}">下移</s:a> </s:else>
原來樣式:
完成後樣式: