したがって、現在のアプリでは、jqGrid のいくつかの行でカスタム Formatter を使用する必要があります。これらはすべて、私の ajax 呼び出しからいくつかのフィールドを取得し、それらを 1 つに連結して、それを行に配置するだけです。
EG ( data.toStreet + data.toCity + data.toState + data.toZip ) は、"Street City, State Zip" として "To Address" 列に返されます。これは正常に機能し、データは正しく表示されますが、フィルター ツールバーを使用すると、フィルターは最初の値 (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;
}
そのため、セル内の値がフォーマット後に「123 fake st, springfield, Va 22344」と表示されている場合、フィルター ツールバーは「123 fake st」のみを検索でき、それ以外は何も検索できません。これを修正する方法、またはおそらくなぜそれが起こっているのか、そして良い回避策についての手がかりはありますか??
編集:グリッドの先頭を含めました。また、result.d のプロパティ Address は以下のコードで作成され、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");
}
});