摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。
前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好這時我想起了可以利用jqueryUi插件實現這個功能。但是jqueryUi插件只能在當前頁面上排序,頁面一刷新又恢復原樣了。于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了1小時,做出來了。這里記錄一下,如果有同學有更好的思路,請不吝賜教..
首先下載jqueryUi插件,網上一搜就要,這里略過。
下載完成后,引入頁面。加入一行代碼就可以:
$(document).ready(function(){ $("#sort tbody").sortable(); });
需要注意的是,選擇器應該選中表格的tbody. sort方法中可以添加很多配置的參數,具體的可以查看這款插件的文檔。同樣網上一搜一大堆,比如菜鳥教程就有。現在只是實現了在當前頁面排序,但數據庫還是老樣子。下面是我的把排序保存到數據庫的方法。之前我的排序是按照數據表的ID值,默認倒序的,現在我可以給數據表中加一個sort字段,或者XX字段,代表排序的數字。 在每次拖動完成后,利用這款插件內置的update函數,通過ajax方式把排序完成的每個行的ID傳到后臺。在后臺控制器里接收后,遍歷,把排在第一行的數據的sort值改為鍵值+1.
比如排序完成后第一行的數據ID值為8,第二行的數據ID為6,第三行為2,后臺接收遍歷時,ID為8的數據肯定是第一個遍歷的,那該數據在foreach里面的鍵值肯定是0,即$k為0,那把它的排序改為$k+1即為0+1等于1.同理,第二個數據的sort就為$k+1即為2,以此類推.然后按sort值正序排列即可.
下面是前臺代碼:
$("#sort tbody").sortable({
update:function () { var idArr = []; $("input[name="id"]").each(function () {//遍歷每一行的ID值 idArr.push($(this).val());//把拍完序的數據ID依次推入數組 }) $.ajax({ type: "POST", dataType: "json", url: "__URL__/staff/pinyong", data:{idArr:idArr}, success:function (data) { layer.msg(data["msg"],{icon:1,time:2000}); }, error:function (request) { console.log(request); } }); } });
這個是一個老項目,TP3寫的,所以我沒用TP5的寫法,TP5只需要把url地址改為{:url(...)}的寫法就行.
后臺代碼:(也是TP3的寫法,TP5只要用model方法取表模型,然后再改改save方法就可以)
public function pinyong(){
if (IS_POST) { //前臺post方式傳數組的話,后臺必須指定接收格式才能接收,否則會報錯 $arr = I("idArr/a"); foreach ($arr as $k => $v) { M("pinyong")->where("id","eq",$v)->save(["sort"=>$k + 1]); } $this->success("排序成功"); } else { $this->display(); } } 這樣,每次前臺拖動排序都會觸發update函數,然后就會把新排序的ID值用ajax傳到后臺,后臺接收后,按順序重新修改sort值就可以. 這樣,一個簡單的功能就實現了,歡迎拍磚哈.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/117536.html
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
摘要:前言自己做的項目碰到這樣一個需求,就是對所有的表格添加表頭可以拖動的效果。需要說明的是,表頭固定的那種是需要用兩個去實現,做過的人應該也都明白。拜拜后續補充更改了寬度改變的方式,應該是只改變拖動列后面的列的寬度。 前言 自己做的項目碰到這樣一個需求,就是對所有的表格添加表頭可以拖動的效果。我一想,這不簡單,分分鐘鐘給你做出來。拿起我的電腦,啪啪啪就敲起來了。showImg(https:...
閱讀 3563·2023-04-26 00:05
閱讀 953·2021-11-11 16:55
閱讀 3522·2021-09-26 09:46
閱讀 3517·2019-08-30 15:56
閱讀 908·2019-08-30 15:55
閱讀 2933·2019-08-30 15:53
閱讀 1939·2019-08-29 17:11
閱讀 814·2019-08-29 16:52