禁用内联和单元格编辑,只允许在jqgrid中进行表单编辑
问题描述:
我有一个网格,它维护某个实体(如文档)元数据的映射。在这种情况下,我们只需添加或编辑。编辑只是为了消除记录禁用内联和单元格编辑,只允许在jqgrid中进行表单编辑
由于这种情况,我们没有意义使用单元格或内联编辑。表格编辑选项将是最好的
然而,这些表格只显示其中有“可编辑:真正的”那些列
那么,如何在网格中的一个禁止编辑,使其只为形式?
onSelectRow根本不会触发。我错过了什么?我使用的jqGrid 3.8
这是我曾尝试:
var metaGrid = jQuery("#" + nodeMetaDataGrid);
metaGrid.jqGrid({
pager: jQuery("#" + nodeMetaDataGridPager),
emptyrecords: "No records to view",
sortname: 'Id',
rowNum: 30,
rowList: [50, 100, 'ALL'],
sortorder: "asc",
height: "auto",
autowidth: true,
colNames: ['Id', 'Meta Data Type', 'Meta Data Value', 'Status', 'Date Added', 'Date Removed'],
colModel: [
{ name: 'Id', index: 'Id', hidden: true, key: true },
{ name: 'MetaType', index: 'MetaType', width: 30, editable: false, edittype: "select", editoptions: { dataUrl: "My/GetList"} },
{ name: 'MetaValue', index: 'MetaValue', width: 30, editable: false, editrules: { required: true} },
{ name: 'Status', index: 'Status', width: 10, editable: false, edittype: "select", editoptions: { value: "A:Active;I:Inactive"} },
{ name: 'DateAdded', index: 'DateAdded', width: 20, editable: false },
{ name: 'DateRemoved', index: 'DateRemoved', width: 20, editable: false }
],
datatype: 'json',
viewrecords: true,
mtype: 'GET',
jsonReader: {
root: "rows",
page: "page",
total: "total",
records: "records",
repeatitems: false,
userdata: "userdata"
},
url: getUrl,
multiselect: false,
//editurl: "someurl"
caption: "Available Meta Data",
onSelectRow: function (id) {
alert("Before Iff statement");
if (id && id !== lastSel) {
alert("hi, selected");
jQuery(this).restoreRow(lastSel);
var cm = metaGrid.jqGrid('getColProp', 'MetaType');
cm.editable = false;
//grid.jqGrid('addRow', id, true, null, null, 'someURL');
//cm.editable = true;
lastSel = id;
}
}
})
.navGrid("#" + nodeMetaDataGridPager, { view: false, del: false, add: true, edit: true, search: false },
{
//Edit mode
height: 150,
reloadAfterSubmit: true,
modal: true,
closeOnEscape: true,
url: "someURL"
},
{ //Add mode
height: "auto",
reloadAfterSubmit: false,
modal: true,
closeOnEscape: true,
url: "someURL",
recreateForm: true,
//trying to use this because onSelectRow does not fire
beforeShowForm: function (form) {
var cm = metaGrid.jqGrid('getColProp', 'MetaType');
cm.editable = true;
}
},
{
//Delete mode
},
{
//View mode
}
);
感谢, APPLOADER
答
也许你可以删除这条语句:
onSelectRow: function (id) {
alert("Before Iff statement");
if (id && id !== lastSel) {
alert("hi, selected");
jQuery(this).restoreRow(lastSel);
var cm = metaGrid.jqGrid('getColProp', 'MetaType');
cm.editable = false;
//grid.jqGrid('addRow', id, true, null, null, 'someURL');
//cm.editable = true;
lastSel = id;
}
,并添加“cellEdit :false“
答
正如kayla所示,删除您的onSelectRow块并使用cellEdit ... http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing
我得到了这一个。谢谢! – Apploader 2011-02-12 11:11:31