我正在使用Lib.Web.MVC
帮助器,因此我的初始jqGrid JS是由该对象生成的。在调用@ grid.GetJavaScript之后,我发出一个单独的调用来修改editData
集合,如下所示。这是我正在使用的有效JS。 AreaId
和AreaItemId
的值不会提交给控制器操作。
$(document).ready(function () {
$('#GetAreaItemDetails').jqGrid({
colNames: ['Code', 'Name', 'Description', 'Has Addl Comments'],
colModel: [
{ editable: true, editoptions: { "maxlength": 16 }, editrules: { required: true },
name: 'AreaItemDetailCode'
},
{ editable: true, editoptions: { "maxlength": 32 }, editrules: { required: true },
name: 'AreaItemDetailName'
},
{ editable: true, editoptions: { "maxlength": 128 }, editrules: { required: true },
name: 'AreaItemDetailDescription'
},
{ editable: true, edittype: 'checkbox', editrules: { required: true },
name: 'HasAdditionalComments'
}],
caption: 'Area Item Details',
url: '/Admin/GetAreaItemDetails',
datatype: 'json',
footerrow: true,
jsonReader: { repeatitems: false, id: 'Id', subgrid: { repeatitems: false} },
mtype: 'POST',
pager: '#GetAreaItemDetailsPager',
prmNames: { npage: 'npage' },
rowList: [10, 20, 30, 40, 50],
rowNum: 10,
sortname: 'AreaItemDetailId',
viewrecords: true,
height: '100%'
}).jqGrid('navGrid', '#GetAreaItemDetailsPager',
{ search: false },
{ height: 175, url: '/Admin/UpdateAreaItemDetail', width: 400, recreateForm: true,
closeAfterEdit: true
},
{ height: 175, url: '/Admin/InsertAreaItemDetail', width: 400, recreateForm: true,
closeAfterAdd: true
});
$("#GetAreaItemDetails").jqGrid('navGrid', '#GetAreaItemDetailsPager',
{/*navGrid options*/},
{
editData: {
AreaItemId: function () {
return $('#ddlAreaItems').val();
},
AreaId: function () {
return $('#ddlAreas').val();
}
}
},
{
editData: {
AreaItemId: function () {
return $('#ddlAreaItems').val();
},
AreaId: function () {
return $('#ddlAreas').val();
}
}
});
});
答案 0 :(得分:2)
我认为您遇到问题的原因是两次调用 navGrid
,而不是一次。 navGrid方法创建导航栏。您只能在网格中创建一个导航栏。
如何从navGrid
nav
代码中查看函数测试是否存在this.nav = true;
属性,该属性将由该方法创建(请参阅the line仅指定{ {1}})。所以代码
if(this.nav) {return;}
将仅用跳过第二次执行该方法。
因此,要解决您的问题,您应该将两个调用合并为一个:
...
}).jqGrid('navGrid', '#GetAreaItemDetailsPager',
{ search: false },
{ height: 175, url: '/Admin/UpdateAreaItemDetail', width: 400, recreateForm: true,
closeAfterEdit: true,
editData: {
AreaItemId: function () {
return $('#ddlAreaItems').val();
},
AreaId: function () {
return $('#ddlAreas').val();
}
}
},
{ height: 175, url: '/Admin/InsertAreaItemDetail', width: 400, recreateForm: true,
closeAfterAdd: true,
editData: {
AreaItemId: function () {
return $('#ddlAreaItems').val();
},
AreaId: function () {
return $('#ddlAreas').val();
}
}
});
如果要将常用的“添加”和“编辑”设置设置为默认设置(在页面上)以进行表单编辑,则可以减少代码
$.extend($.jgrid.edit, {
height: 175,
url: '/Admin/InsertAreaItemDetail',
width: 400,
recreateForm: true,
closeAfterAdd: true,
closeAfterEdit: true,
editData: {
AreaItemId: function () {
return $('#ddlAreaItems').val();
},
AreaId: function () {
return $('#ddlAreas').val();
}
}
});
在调用navGrid
之前。在这种情况下,呼叫本身可以减少到
...
}).jqGrid('navGrid', '#GetAreaItemDetailsPager', { search: false });