Я использую вспомогательный помощник Lib.Web.MVC
, поэтому мой исходный jqGrid JS генерируется этим объектом. После вызова @ grid.GetJavaScript я затем выдаю отдельный вызов для изменения коллекции editData
, как указано ниже. Вот эффективный JS, который я использую. Значения AreaId
и AreaItemId
никогда не попадают в действие контроллера.jqGrid: дополнительные параметры редактирования не отправляются на сервер
$(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();
}
}
});
});
Извините за форматирование кода. Я не знаю, как правильно это сделать на SO, и я вынужден использовать IE8 на работе. :) Помощник Lib.Web.Mvc используется для генерации исходного JS для сетки, и параметр ExtraData не может использоваться. Есть ли способ выпустить последующий вызов для обновления свойств навигации? –
@ LSU.Net: вы можете использовать '$ .extend ($. Jgrid.edit, {...}' подход хотя бы для установки 'editData'. Я не знаю' Lib.Web.Mvc', но я предположим, что все будет работать правильно. – Oleg
@ LSU.Net: Кстати [здесь] (http://meta.stackexchange.com/a/22189/147495) описано, как вы можете отформатировать код. В общем, если вы просто выберите полный фрагмент кода и нажмите кнопку '{}' над окном редактирования. В каждую отмеченную строку будут добавлены 4 пробела. Таким образом, код будет корректно отформатирован. – Oleg