我正在使用jqGrid在下面的代碼中顯示我的項目中的訂單,當我嘗試使用網格上的刷新按鈕進行刷新時,列狀態的格式化程序即函數dropdownFormatter()具有rowObject變量未定義。jqGrid返回rowObject undefined
由於這一點,當我嘗試一個自動重新加載函數,下拉列表,不要填充適當的參數。如果將jqGrid屬性「loadonce」設置爲false,則可以解決此問題。
但是,如果「loadonce」屬性設置爲false,下拉選擇根本不會過濾網格。
jQuery("#list").jqGrid({
url:'http://192.168.0.7:8000/orders_get_open',
datatype: "json",
colNames:['Id','Order No','Address', 'Pincode', 'Phone Number', "Pickup Date", "Pickup Time", "Delivery Date", "Delivery Time", "Status", "Delivery Boys", "Actions"],
colModel:[
{name: 'order_id', index: 'order_id', hidden: true},
{name: 'order_no', index: 'order_no', width: 130},
{name: 'user_address',index: 'user_address', width: 400, search: false},
{name: 'pincode',index: 'pincode', width: 110, search: false},
{name: 'user_phone_number',index: 'user_phone_number', width: 180, search: false},
{name: 'pickup_date', index: 'pickup_date'},
{name: 'pickup_time', index: 'pickup_time'},
{name: 'delivery_date', index: 'delivery_date', width: 170},
{name: 'delivery_time', index: 'delivery_time', width: 170},
{
name: 'status', index: 'status', formatter: statusFormatter, stype: 'select', searchoptions: {
sopt: ['eq'], value: ':All;ordered:Ordered;received:Received;laundry_entry:Laundry Entry;laundry_exit:Laundry Exit;delivered:Delivered'
}
},
{name: 'delivery_boys', index: 'delivery_boys', formatter: dropdownFormatter, search: false},
{name: '', index:'', formatter: actionFormatter, search: false}
],
width: "1300",
height: "auto",
cache: false,
rowNum:10,
rowList:[10,20,30],
pager: '#pager',
loadonce: true,
sortname: 'id',
viewrecords: true,
sortable: true,
sortname: "order_no",
sortorder: "asc",
caption:"Order Details",
}).jqGrid('navGrid','#pager', {
edit:false,add:false,del:false, search: false, refresh: true
}).jqGrid('filterToolbar', {
stringResult: true, searchOnEnter: false, defaultSearch: "cn"
});
function dropdownFormatter(cellValue, options, rowObject) {
console.info(cellValue, options, rowObject);
console.log(rowObject.delivery_boy_id);
var control = "<select class='form-control'><option value>Select</option>";
$.each(cellValue, function (idx, obj){
if (obj.id == rowObject.delivery_boy_id) {
control += "<option value='" + obj.id + "' selected='selected'>" + obj.name + "</option>";
} else {
control += "<option value='" + obj.id + "'>" + obj.name + "</option>";
}
});
control += "</select>";
return control;
}
的樣本數據:https://api.myjson.com/bins/22vo1
的jsfiddle的代碼:http://jsfiddle.net/76588Lev/1/
哪個版本的jqGrid和哪個fork([版本<= 4.7中的自由jqGrid](),[Guriddo jqGrid JS]()或舊的jqGrid)使用? – Oleg
這是來自腳本文件:* @license jqGrid 4.6.0 - jQuery Grid *版權所有(c)2008,託尼Tomov,[email protected] – Collins
版本4.6已經死了。我開發[免費jqGrid](https://github.com/free-jqgrid/jqGrid)。這是舊的jqGrid的分支。我在免費的jqGrid中修復了許多舊bug,並實現了許多錯誤。如果我只是將jqGrid 4.6替換爲免費的jqGrid 4.13.0,那麼代碼工作:http://jsfiddle.net/OlegKi/76588Lev/2/。例如,您可以使用CDN提供的免費jqGrid(請參閱[wiki文章](https://github.com/free-jqgrid/jqGrid/wiki/Access-free-jqGrid-from-different-CDNs))。順便說一句,free jqGrid額外設置了'options.rowData',它保存輸入數據* always * named format('options.rowData.delivery_boy_id') – Oleg