jqGrid本地数据排序会丢失信息
好吧,我正准备把头发扯下来。我正在加载一个jqGrid,其中包含JSON数据,但“loadonce”设置为true,以保持其本地性。当我只显示列的默认内容时,排序工作正常,但我需要的是,一些列使用另一列的信息来修改显示的内容。例如,我想在一列下同时显示“设备”和“模型”,而不是“设备”列和“模型”列,就像这个“设备-模型”,我使用一个自定义的格式化程序 问题是,在这种情况下,当我进行排序时,我丢失了“模型”信息,它变得“未定义”。以下是我的部分代码:jqGrid本地数据排序会丢失信息,jqgrid,jqgrid-formatter,Jqgrid,Jqgrid Formatter,好吧,我正准备把头发扯下来。我正在加载一个jqGrid,其中包含JSON数据,但“loadonce”设置为true,以保持其本地性。当我只显示列的默认内容时,排序工作正常,但我需要的是,一些列使用另一列的信息来修改显示的内容。例如,我想在一列下同时显示“设备”和“模型”,而不是“设备”列和“模型”列,就像这个“设备-模型”,我使用一个自定义的格式化程序 问题是,在这种情况下,当我进行排序时,我丢失了“模型”信息,它变得“未定义”。以下是我的部分代码: mdlTable = tableWrap.j
mdlTable = tableWrap.jqGrid({
url: loadURL,
datatype: 'json',
colNames: ['ID', 'Device', 'Description', 'IP', 'Model'],
colModel: [
{name:'id', index:'id', hidden:true, key:true},
{name:'device', index:'device', width:192,
formatter:function(value, options, rData){
var str = "<a href='/administration/mdl/vwDevice.aspx?device_id=";
str += rData[0] + "' target='_blank'>" + value;
if ('' != rData[4]) str += " - " + rData[4];
str += "</a>";
return str;
}
},
{name:'desc', index:'desc', width:256, sortable:false},
{name:'ip', index:'ip', width:96},
{name:'model', index:'model', hidden:true}
],
sortname: 'id',
viewrecords: true,
loadonce: true,
viewsortcols: [true,'vertical',true],
gridview: true,
ignoreCase: true
})
.navGrid('#deviceList_footer', {edit:false, add:false, del:false, cloneToTop:true});
问题是,在开始时,自定义格式化程序的第三个参数具有数组类型,以后不再具有。因此,您必须将格式化程序修改为
formatter: function(value, options, rData){
var model = '',
str = "<a href='/administration/mdl/vwDevice.aspx?device_id=" +
value + "' target='_blank'>" + value;
if ($.isArray(rData)) {
model = rData[4];
} else {
model = rData.model;
}
if (model) {
str += " - " + model;
}
str += "</a>";
return str;
}
为了能够读取新的JSON格式,jqGrid中唯一的更改是附加参数
jsonReader:{cell:'}
。查看结果。问题在于,自定义格式设置程序的第三个参数在开始时具有数组类型,以后不再具有。因此,您必须将格式化程序修改为
formatter: function(value, options, rData){
var model = '',
str = "<a href='/administration/mdl/vwDevice.aspx?device_id=" +
value + "' target='_blank'>" + value;
if ($.isArray(rData)) {
model = rData[4];
} else {
model = rData.model;
}
if (model) {
str += " - " + model;
}
str += "</a>";
return str;
}
为了能够读取新的JSON格式,jqGrid中唯一的更改是附加参数
jsonReader:{cell:'}
。查看结果。能否包含一些可用于重现问题的测试JSON数据?能否包含一些可用于重现问题的测试JSON数据?谢谢!这正是我所需要的。未意识到rData在初始加载后正在更改类型。谢谢你给我的其他建议,谢谢!这正是我所需要的。未意识到rData在初始加载后正在更改类型。谢谢你给我的其他建议。
{ "rows" : [
["181", "Router A", "some description", "55.444.33.222", "Model 1"],
["291", "Router B", "some description", "55.333.22.444", "Model 2"],
["1346", "Router C", "some description", "55.111.44.333", "Model 3"],
["1999", "Router D", "some description", "55.222.11.000", "Model 4"]
]}