Программно изменить значение ячейки EditorGrid - PullRequest
1 голос
/ 03 марта 2010

У меня есть сетка редактора, где, если конкретная ячейка находится в фокусе (редактируется), появляется окно с панелью дерева, позволяющее пользователю выбрать узел из панели дерева в качестве нового значения ячейки.Таким образом, пользователь фактически не редактирует соответствующую ячейку, а использует окно для выбора нового значения.Однако у меня возникают трудности с программной установкой значения рассматриваемой ячейки.

Ниже приведен код, который я использую для настройки сетки, включая модель столбца, которая выбирает, какой редактор использовать для ячейки, в зависимости оттип значения:

var editorCM = new Ext.grid.ColumnModel({
  //config
  ,editors : {
    //rest of editors
    'id' : new Ext.grid.GridEditor(new Ext.form.TextField({readOnly : true}))
  }
  ,getCellEditor : function(col, row) {
    //choose editor depending on the type value of a cell
  }
})

var editorGrid = new Ext.grid.EditorGridPanel({
  //rest of config
  ,cm : editorCM
})

Ниже приведен мой код для изменения значения ячейки после выбора пользователем из древовидной панели.

function submitNode(newValue) {
  var temp = editorGrid.GetSelectionModel().getSelectedCell(); //returns array containing column and row position of selected cell, which value we want to change.

  //temp[1] = column index, temp[0] = row index
  //Gets the cell editor at specific position and sets new value for that cell
  editorGrid.getColumnModel().getCellEditor(temp[1], temp[0]).setValue(newValue);
}

Я также пробовал несколько других способов (все, включая setValue (newValue) ), но пришли с пустыми руками.Я просматривал API и форумы ExtJS на предмет подсказки, но также пришел с пустыми руками.

1 Ответ

1 голос
/ 13 марта 2010

Я не работал с сеткой редактора, поэтому немного повесил.

глядя на это для справки: http://www.extjs.com/deploy/dev/examples/grid/edit-grid.js

похоже, что они сделали это (для добавления), чтобы обновить хранилище напрямую, и если бы вы могли идентифицировать запись хранилища, вы наверняка могли бы обновить ее напрямую.

посмотрите на обработчик для addPlant:

 handler : function(){
            // access the Record constructor through the grid's store
            var Plant = grid.getStore().recordType;
            var p = new Plant({
                common: 'New Plant 1',
                light: 'Mostly Shade',
                price: 0,
                availDate: (new Date()).clearTime(),
                indoor: false
            });
            grid.stopEditing();
            store.insert(0, p);
            grid.startEditing(0, 0);
        }

если это не удастся, мне будет интересно посмотреть, что произойдет, если вы сделаете свое поле не только для чтения:

  ,editors : {
//rest of editors
'id' : new Ext.grid.GridEditor(new Ext.form.TextField({readOnly : false}))  }

просто пара мыслей.

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