Я полагаю, что данные, которые вы получаете как result.colNames
и result.colModel
, являются строками, а не объектами .
var cn = ['AccountID','ClientID'];
var cm = [
{editable:false,index:'AccountID',jsonmap:'AccountID',key:false,name:'AccountID',
resizable:true,search:false,sortable:true,width:300},
{editable:false,index:'ClientID',jsonmap:'ClientID',key:false,name:'ClientID',
resizable:true,search:false,sortable:true,width:300}];
var cd = '{total:1,page:1,records:1,rows:[{AccountID:1,ClientID:3}]}';
jQuery('#QueryGrid').jqGrid({
jsonReader: { repeatitems: false },
height: 'auto',
colNames: cn,
colModel: cm,
datastr: cd,
viewrecords: true
});
Кстати, некоторые свойства, которые вы используете в параметрах colModel
, являются настройками по умолчанию. Параметр shrinkToFit: true
также является значением по умолчанию. Таким образом, вы можете уменьшить до
[{index:'AccountID',jsonmap:'AccountID',name:'AccountID',search:false,width:300},
{index:'ClientID',jsonmap:'ClientID',name:'ClientID',search:false,width:300}]
Если вы будете использовать jsonReader: { repeatitems: false, cell:"" }
, тогда он может быть короче
[{index:'AccountID',name:'AccountID',search:false,width:300},
{index:'ClientID',name:'ClientID',search:false,width:300}]
Вероятно, вы действительно хотели отправить result.colNames
и result.colModel
в виде строк JSON, которые можно преобразовать в объекты, например, с учетом jQuery.parseJSON . В этом случае вам следует немного изменить формат данных в result.colNames
и result.colModel
. Следующий код также будет работать
var cnStr = '["AccountID","ClientID"]';
var cmStr = '[{"index":"AccountID","name":"AccountID","search":false,"width":300},{"index":"ClientID","name":"ClientID","search":false,"width":300}]';
var cd = '{total:1,page:1,records:1,rows:[{AccountID:1,ClientID:3}]}';
jQuery('#QueryGrid').jqGrid({
jsonReader: { repeatitems: false, cell:"" },
datatype: 'jsonstring',
height:'auto',
colNames: jQuery.parseJSON(cnStr),
colModel: jQuery.parseJSON(cmStr),
datastr: cd,
viewrecords: true
});
Еще одно маленькое замечание. Вы не используете значения key:true
или id
в данных jqGrid. Это потенциально опасно. Вы должны понимать, что jqGrid использует id = "1", id = "2" и т. Д., Если в данных нет id
. Проблема может быть, если вы используете две или более таких сеток на одной странице. Вы можете получить двойные идентификаторы очень просто, что недопустимо.