所以在当前的应用程序中,我必须在我的 jqGrid 中的几行上使用自定义格式化程序。所有这些都是从我的 ajax 调用中获取一些字段,将它们连接成一个,然后将它们放在一行中。
EG ( data.toStreet + data.toCity + data.toState + data.toZip ) 以“Street City, State Zip”的形式返回到“To Address”列。这工作正常,数据显示正确,但使用过滤工具栏时,过滤器仅基于第一个 val (data.street)。下面是相关代码的超级简化版本。
$('#grid').jqGrid({
...
colNames:["AddressTo", "AddressFrom"],
colModel:[
{name:"toStreet" formatter: ToAddressFormatter},
{name:"fromStreet" formatter: FromAddressFormatter}
],
...
}),
$('#grid').jqGrid('filterToolbar',
{
stringResult:true,
searchOnenter: true,
defaultSearch: 'cn'
}
});
ToAddressFormatter = function(el, opt, rowObj){
var address = rowObj.toStreet+ " " + rowObj.toCity + ", " + rowObj.toState + " " + rowObj.toZip;
return address;
},
FromAddressFormatter = function(el, opt, rowObj){
var address = rowObj.fromStreet+ " " + rowObj.fromCity + ", " + rowObj.fromState + " " + rowObj.fromZip;
return address;
}
因此,如果格式化后的 cel 中的值显示为“123 fake st, springfield, Va 22344”,则过滤器工具栏只能搜索“123 fake st”而不能搜索其他内容。有没有人知道如何解决这个问题,或者可能为什么会发生这种情况以及一个好的解决方法?
编辑:我已经包括了我的网格的开头。此外,result.d 的属性地址是在下面的代码中创建的,而不是从 web 服务返回的。我的列被映射到正确显示格式的“地址”,但仍无法按预期搜索。
$('#grdDisasters').jqGrid({
datatype: function(postdata) {
var obj = { "showActive": $('#btnFilterActive.pressed').length > 0 ? true : false, "showInactive": $('#btnFilterActive.pressed').length > 0 ? true : false,
'page': postdata.page, 'rows': postdata.rows, 'sortIndex': postdata.sidx, 'sortDirection': postdata.sord, 'search': postdata._search,
'filters': postdata.filters || ''
};
$.ajax({
url: "/GetGrid",
data: JSON.stringify(obj),
success: function(result) {
for (var i = 0, il = result.d.rows.length; i < il; i++) {
LoadedDisasters[i] = result.d.rows[i];
result.d.rows[i].cells.Address = result.d.rows[i].cells.Street + " " + result.d.rows[i].cells.City + ", "+ result.d.rows[i].cells.State+ " "+ result.d.rows[i].cells.Zip;
}
result.d = NET.format(result.d);//just correctly format dates
UpdateJQGridData($('#grdDisasters'), result.d);
},
error: function(result) {
//alert("Test failed");
}
});