小編給大家分享一下如何解決jqGrid翻頁(yè)時(shí)數(shù)據(jù)選中丟失問(wèn)題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比平城網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式平城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋平城地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
我在項(xiàng)目中使用jqGrid時(shí),采用異步加載服務(wù)器數(shù)據(jù),例如點(diǎn)擊翻頁(yè)、搜索時(shí)都重新加載數(shù)據(jù)。這樣就會(huì)產(chǎn)生一個(gè)問(wèn)題。
問(wèn)題描述:
當(dāng)對(duì)列表批量刪除時(shí),可以選擇多個(gè)記錄信息,選擇當(dāng)前頁(yè)的第一條,如圖:
點(diǎn)擊下一頁(yè)再選擇一些記錄,點(diǎn)擊刪除時(shí),則無(wú)法刪除前面頁(yè)所選擇的記錄。
解決辦法:jqGrid貌似沒(méi)有解決這個(gè)問(wèn)題的方法,所以只能自己寫(xiě)代碼保存所選擇的記錄。需要借助jqGrid的兩個(gè)事件方法:
/** multiselect為ture,且點(diǎn)擊頭部的checkbox時(shí)才會(huì)觸發(fā)此事件。aRowids:所有選中行的id集合,為一個(gè)數(shù)組。status:boolean變量說(shuō)明checkbox的選擇狀態(tài),true選中false不選中。無(wú)論checkbox是否選擇,aRowids始終有 值 **/ onSelectAll(aRowids,status) /** 當(dāng)選擇行時(shí)觸發(fā)此事件。rowid:當(dāng)前行id;status:選擇狀態(tài),當(dāng)multiselect 為true時(shí)此參數(shù)才可用 **/ onSelectRow(aRowids,status)
大體代碼
//保存選擇記錄的數(shù)組 var selectIds = new Array(); jQuery("#gridid").jqGrid({ onSelectAll:function(aRowids,status){ if(status==true){ $.each(aRowids,function(i,item){ saveIdToArray(item); }) }else{ $.each(aRowids,function(i,item){ deleteIdFromArray(item); }) } }, onSelectRow:function(aRowids,status){ if(status==true){ //選擇 saveIdToArray(aRowids); }else{ //取消選擇 deleteIdFromArray(aRowids); } } }) //保存到數(shù)組 function saveIdToArray(item){ var exit = false; for(var i = 0;i < selectIds.length;i++){ if(item == selectIds[i]){ exit = true; break; } } selectAssets.push(item); } } //從數(shù)組中刪除 function deleteIdFromArray(item){ if(selectIds.length > 0){ for(var i = 0;i < selectIds.length;i++){ if(item == selectIds[i]){ selectIds.splice(i,1); break; } } } }
操作時(shí),只對(duì)數(shù)組進(jìn)行操作就可以了。
以上是“如何解決jqGrid翻頁(yè)時(shí)數(shù)據(jù)選中丟失問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!