在一次項目中想從后台自定義一些返回值傳回jqGrid,所以就想到了jqGrid的這個userData屬性,但是真的是坑了我好慘,這里記錄一下!
1、首先看說明,這個jsonReader的默認配置,userdata:'userdata'
1 jsonReader : { 2 root: "rows", // json中代表實際模型數據的入口 3 page: "page", // json中代表當前頁碼的數據 4 total: "total", // json中代表頁碼總數的數據 5 records: "records", // json中代表數據行總數的數據 6 repeatitems: true, // 如果設為false,則jqGrid在解析json時,會根據name來搜索對應的數據元素(即可以json中元素可以不按順序);而所使用的name是來自於colModel中的name設定。 7 cell: "cell", 8 id: "id", 9 userdata: "userdata", 10 subgrid: { 11 root:"rows", 12 repeatitems: true, 13 cell:"cell" 14 } 15 }
2、在使用過程中,最開始我是這樣使用的,
//在后台,我自己定義了幾個求和數值放在了一個叫userdata的對象中,這個時候,我是沒有修改jsonReader的默認配置,也就是說userdata是'userdata',
//我這里起的名字是userdata,跟jsonReader配置的名字一樣
var result = new { currentPage = request.page, totalPages = request.totalPages, totalCount = request.totalCount, rows = resultList, //求和 自定義jqGrid返回參數 userdata = new { sumWeight = request.SumWeight, sumIncome = request.SumIncome, sumQuantity = request.SumQuantity } };
//在前台,我想這么取出來,失敗
var userData = $("#gridList").jqGrid('getGridParam').userdata;
3、總結!
結果,當然是成功取出來了,經過了F12的好一頓亂搞,我終於發現,在$("#gridList").jqGrid('getGridParam')中,有一個userData屬性,這個屬性名是固定的就是大寫,它存放的值就是jsonReader中的那個userdata:'userdata'的值,在這里默認是小寫的userdata,其實這個設置,只是跟你在后台起對象名有關系,比如,你這里默認是userdata,那么你在后台想用userdata的時候,你就必須也用userdata,這倆必須一一對應,然后。重要的事情說三遍!!!嗯就是三個!!!,這個時候,我以為在取值的時候,這么取了
var userData = $("#gridList").jqGrid('getGridParam').userdata;
結果,不對!,其實在取值的時候呢,是用的$("#gridList").jqGrid('getGridParam')自己固定的一個屬性,它就叫userData,!!!不管你在jsonReader中起了什么狗名字userdata 也好,xxxfs也罷,只有你在后台存放數據的時候,名字跟這個一致就可以!但是,在取值的時候,就是用.userData就好了!!!