grid.jqGrid({
datatype: "json",
url: "Industry.aspx/GetAllRecords",
datatype: "json",
mtype: 'POST',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
serializeGridData: function (posData) {
//alert(JSON.stringify(posData.d));
return JSON.stringify(posData);
},
colNames: ['', 'Code', 'Description', 'Description2', 'Active'],
colModel: [
{ name: 'action', index: 'action', width: 45, sortable: false },
{ name: 'IndustryCd', width: 80 },
{ name: 'IndustryDs', width: 200 },
{ name: 'IndustryDs2', width: 200 },
{ name: 'active', width: 50,
editoptions: { value: '1:0' },
formatter: 'checkbox', formatoptions: { disabled: false}
}
],
height: 'auto',
gridview: true,
loadonce: false,
id:'IndustryCd',
jsonReader: {
repeatitems: false,
root: function (obj) {
alert(obj.d);
return typeof obj.d === "string" ? $.parseJSON(obj.d) : obj.d;
},
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.length; }
},
loadComplete: function () {
}
});
JSON数据
d=[
{
"IndustryCd": "1",
"IndustryDs": "Manufacture",
"IndustryDs2": "",
"Active": true
},
{
"IndustryCd": "2",
"IndustryDs": "Sales",
"IndustryDs2": "",
"Active": false
}
]
答案 0 :(得分:1)
我在代码/数据中看到了一些问题:
colModel
和输入数据中使用相同的名称(将"Active": true
和"Active": false
与name: 'active'
中的colModel
进行比较。editoptions: { value: '1:0' }
,但在输入数据中使用了true
和false
,而不是值1
和0
。id:'IndustryCd',
作为jqGrid的选项。正确的位置将在jsonReader
内。loadonce: true
通知jqGrid它应该加载整个数据并进行本地分页。pager
或toppager
参数。你没有在问题中写道jqGrid的哪个版本以及你使用的jqGrid的哪个分支。如果您不使用free jqGrid fork,则可以设置默认值rowNum: 20
,并且只能看到从服务器返回的前20行。用户将无法更改页面并显示其余数据。如果无法升级到免费的jqGrid,则应添加rowNum
一些足够大的值(如rowNum: 10000
)。formatter: 'checkbox', formatoptions: { disabled: false}
,这是许多误解的根源。用户将看到可以更改的复选框,但您当前的代码不会以任何方式处理更改。格式化程序与编辑网格无关。因此,即使稍后使用某种编辑模式,也不会保存更改。