禁用内联和单元格编辑,只允许在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

+0

我得到了这一个。谢谢! – Apploader 2011-02-12 11:11:31

也许你可以删除这条语句:

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