【问题标题】:Disable inline and cell editing and only allow form editing in jqgrid禁用内联和单元格编辑,只允许在 jqgrid 中进行表单编辑
【发布时间】:2011-02-02 16:39:46
【问题描述】:

我有一个网格,用于维护某些实体(例如文档)的元数据的映射。在这种情况下,我们只需添加或编辑。编辑只是为了使记录失效

既然是这种情况,我们就没有必要使用单元格或内联编辑了。表单编辑选项将是最好的

但是,这些表单只显示那些具有“editable: true”的列

那么,如何禁用网格中的编辑而只为表单启用呢?

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               
           }
         ); 

谢谢, 应用加载器

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

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

    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”

    【讨论】:

      【解决方案2】:

      如 kayla 所示,删除您的 onSelectRow 块并使用 cellEdit...http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-18
        • 1970-01-01
        • 2012-07-29
        相关资源
        最近更新 更多