jqGrid:未发布到服务器的其他编辑参数
我正在使用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(); } } }); });
我想你问题的原因是两次调用 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 });