Отключить встроенное редактирование и редактирование ячеек и разрешить редактирование формы только в jqgrid - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть сетка, которая поддерживает сопоставления метаданных некоторого объекта (например, документа). В таком случае нам просто нужно добавить или отредактировать. Редактирование должно быть сделано только для инактивации записи

Поскольку это так, у нас нет смысла использовать ячейку или встроенное редактирование. Опция редактирования формы будет лучшей

Тем не менее, эти формы показывают только те столбцы, которые имеют «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               
           }
         ); 

Спасибо, Apploader

Ответы [ 2 ]

1 голос
/ 06 мая 2013

возможно, вы можете просто удалить это утверждение:

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"

0 голосов
/ 12 декабря 2013

Как указано в kayla, удалите блок onSelectRow и используйте cellEdit ... http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...