Я использую jqGrid пару месяцев, и я очень рад это сделать:)
Я успешно использую jqGrid в веб-приложении ASP.NET, все работает правильно. Я решил использовать редактирование форм jqGrid, потому что у сущностей есть много свойств, с которыми мне приходится иметь дело.
Я понимаю, что если colModel содержит 5 столбцов, они появляются в модальной диалоговой форме (действие редактирования), если свойства имеют editable: true. Кроме того, я могу установить, что 4 свойства видимы, а последнее скрыто (даже если оно может отображаться в форме, установив edithidden: true).
Есть ли способ установить 4 свойства в colModel, но во всплывающей модальной форме есть одно, два или более полей?
EDIT:
Пожалуйста, посмотрите на этот код:
ajaxSelectOptions: { type: "POST", contentType: "application/json; charset=utf-8", },
colNames: [
'ID', 'Code', 'Number', 'Floor (nr.)', 'Descr', 'Type',
'Create by', 'Creation date',
'Status', 'Features'],
colModel: [
{ name: 'ID', index: 'id', width: 10, align: "center", search: false, sorttype: 'int', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{ name: 'Code', index: 'Code', width: 20, align: "center", sorttype: 'text', searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{
name: 'Number',
index: 'Number',
width: 20,
align: "center",
sorttype: 'int',
searchoptions: { sopt: ['eq', 'ne', 'cn'] },
editable: true,
editoptions: { size : 20 },
editrules: { required: true }
},
{
name: 'Floor',
index: 'Floor',
width: 30,
align: "center",
sorttype: 'int',
search: false,
edittype: 'select',
editable: true,
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid" name="myid">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
},
editrules: { required: true }
},
{ name: 'Descr', index: 'Descr', width: 40, align: "center", sorttype: 'text', editable: true, editoptions: { size: 10} },
{
name: 'Type',
index: 'Type',
width: 50,
align: "center",
sorttype: 'text',
edittype: 'select',
editable: true,
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid2" name="myid2">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
},
editrules: { required: true }
},
{ name: 'CreatedBy', index: 'CreatedBy', align: "center", search: false, sorttype: 'text', width: 40, searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{ name: 'CreationDate', index: 'CreationDate', align: "center", search: false, sorttype: 'text', width: 30, searchoptions: { sopt: ['eq', 'ne', 'cn'] }, editable: false, editoptions: { readonly: true} },
{
name: 'Status',
index: 'Status',
width: 50,
hidden: true,
edittype: 'select',
editable: true,
editrules: { edithidden: true, required: true },
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid3" name="myid3">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
}
},
{
name: 'Features',
index: 'Features',
width: 50,
hidden: true,
edittype: 'select',
editable: true,
editrules: { edithidden: true, required: true },
editoptions: {
dataUrl: '<%# ResolveUrl("~/path/to/myCSharpWebService") %>',
buildSelect: function (data) {
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
var s = '<select id="myid4" name="myid4">';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
s += '<option value="' + response[i]["Id"] + '">' + response[i]["Descrizione"] + '</option>';
}
}
return s + "</select>";
}
}
}
],
это фрагмент функции, которую я использую для создания сетки на моей странице aspx. Как вы можете видеть из colModel, существует 10 протоколов, но только 7 из них показаны jqGrid; Мне нужны другие, потому что я хочу показать их в модальной всплывающей форме, когда я редактирую запись в сетке.
Теперь я хотел бы записать более понятный код: я бы предпочел добавить эти 3 дополнительных поля при нажатии кнопки редактирования при создании всплывающего окна вместо перечисления их в colModel