今天做項目的時候發現一個問題,我們有一個篩選項,一個是VIP用戶,一個是普通用戶,還有一個是全部用戶,首先看下我們的selection 非常常用的一種格式,然後我們會做一個判斷 但是這個我們發現了一個問題,就是在我們從vip和普通用戶切換到全部數據之後,查詢的還是上次的數據。 比如說我查了一次VIP ...
今天做項目的時候發現一個問題,我們有一個篩選項,一個是VIP用戶,一個是普通用戶,還有一個是全部用戶,首先看下我們的selection
<select name="" id="user_type"> <option value="">全部</option> <option value="1">VIP</option> <option value="2">普通</option> </select>
非常常用的一種格式,然後我們會做一個判斷
1 var jqgrid_post_data = {};//最終向jqgrid傳輸的json數據 2 if($("#user_type").val()){ //如果有值的話,給json複製 3 jqgrid_post_data["user_type"] = $("#user_type").val(); 4 } 5 jQuery("#table_list_1").jqGrid("clearGridData"); 6 $("#table_list_1").jqGrid('setGridParam', { //重新請求參數 7 postData:jqgrid_post_data , 8 page:this_page, 9 }).trigger("reloadGrid");
但是這個我們發現了一個問題,就是在我們從vip和普通用戶切換到全部數據之後,查詢的還是上次的數據。
比如說我查了一次VIP的用戶數據,然後我切換到了全部用戶,這個時候jqgrid還是查詢的VIP的用戶,但是我們列印 jqgrid_post_data 的時候,這個裡面是沒有user_type屬性的。經過查找,發現了是jqgrid緩存了參數。結果辦法分為兩種,一種是比較簡單的,當我們選擇全部用戶的時候,把user_type設置為空
1 jqgrid_post_data["user_type"] = '';
第二種方法是看其他的博客瞭解到的,就是在reloadGrid之前,執行下麵的函數,
1 var postData = $('#jqGrid').jqGrid("getGridParam", "postData"); 2 $.each(postData, function (k, v) { 3 delete postData[k]; 4 });
就是把原來的參數清理掉,然後在重新載入一遍數據。