jqGrid:未发布到服务器的其他编辑参数

我正在使用Lib.Web.MVC帮助器,所以我的初始jqGrid JS是由该对象生成的。 在调用@ grid.GetJavaScript之后,我发出一个单独的调用来修改editData集合,如下所示。 这是我正在使用的有效JS。 AreaIdAreaItemId的值不会被提交给控制器操作。

 $(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(); } } }); }); 

我想你问题的原因是两次调用 navGrid而不是一次。 navGrid方法创建导航栏。 您只能在网格中创建一个导航栏。

如何从navGrid的代码行中看到函数测试存在的nav属性将由该方法创建(参见刚刚分配this.nav = true; )。 所以代码

 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 });