Я определил встроенное редактирование для моей сетки, которая содержит несколько столбцов флажков, и она отлично работает.
Я установил для параметра 'navGrid'
значение edit: true
, и я получил красивый значок карандаша, и при нажатии на него открылась форма.
проблема в том, что я определяю свойство value столбца следующим образом: value: 'true:false'
, который отлично работает для встроенного редактирования (сгенерированный элемент ввода:
<input type="checkbox" disabled="disabled" offval="no" value="false">
),
но в режиме редактирования формы сгенерированный ввод:
* * 1010
, что приводит к тому, что проверенное значение будет отправлено на сервер как 'true: false'.
есть идеи?
прикреплен весь мой код сетки:
$("#grid").jqGrid({
url: 'SampleScriptService.asmx/GetGridData',
datatype: 'json',
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
serializeGridData: function (postData) {
//with ASP.Net services, all parameters must be set in the post request.
//so here we make sure that all the parameters that the web service expects are prensent. if not- we create them with null value.
if (!postData.username) {
postData.username = null;
}
if (!postData.fullname) {
postData.fullname = null;
}
if (!postData.isadministrator) {
postData.isadministrator = null;
}
return JSON.stringify(postData);
},
mtype: "POST",
jsonReader: { repeatitems: false, root: "d.rows", page: "d.page", records: "d.records", total: "d.total" },
colNames: ['Username', 'Full Name', 'Administrator?', 'Password'],
colModel: [
{ name: 'username', key: true, index: 'username', jsonmap: 'Username',
editable:false , edittype:'text'
},
{ name: 'fullname', index: 'fullname', /* width: 90,*/
editable:true, edittype:'text',
jsonmap: 'FullName' },
{ name: 'isadministrator', index: 'isadministrator', formatter: 'checkbox', sortable: false,
editable: true, edittype: 'checkbox', editoptions: { value: 'true:false' },
stype: 'select', searchoptions: { value: 'none:All;true:Yes;false:No' }
/*, width: 80*/, jsonmap: 'IsAdministrator' },
{ name: 'password', index: 'password'
/*, width: 150*/,
editable: true, edittype: 'password',
formatter: function (cellvalue, options, rowObject) {
//never display anything in the password column
return '';
},
jsonmap: 'Password', search: false }
],
rowNum: 2,
pager: '#pager',
viewrecords: true,
sortname: 'username',
caption: "Users Management",
onSelectRow: function (id) {
if (id && id !== currentlyEditedRowId) {
jQuery('#grid').restoreRow(currentlyEditedRowId);
currentlyEditedRowId = id;
}
jQuery('#grid').editRow(currentlyEditedRowId, true);
},
editurl: "SampleScriptService.asmx/UpdateUser"
}).jqGrid('navGrid', "#pager", { edit: true, add: true, del: false, search: false })
//add toolbar searching
.jqGrid('filterToolbar', {});