2015-10-21 8 views
1

Я использую сетку с пятнами. В верхней части сетки имеется текстовое поле. Когда пользователь вводит значение в текстовое поле и выходы, нам нужно ввести новую строку в сетку.Невозможно установить фокус и отредактировать ячейку в сетке с пятнами

Вот как выглядит код:

gridOptions = { 

      useCheckBoxField: 'selected', 
      data: 'data', 
      columns: 'columns', 
      enableCellNavigation: true, 
      enableColumnReorder: true, 
      editable: true, 
      autoEdit: true, 
      multiColumnSort: true, 
      rowSelectionModel: 'selectedRows', 
      enableAddRow: true 
     } 

Это как первый столбец выглядит, который я пытаюсь изменить.

{id: 'id', name: 'id', field: 'id', editor: Slick.Acsiom.Editors.Text, sortable: true, width: 210, minWidth: 100}, 

Это код для ввода новой строки, а затем сделать первую ячейку редактируемой и установить фокус на ячейку.

var d =  $scope.$grid.grid.getData(); 
       $scope.$grid.grid.invalidateRow(d.length); 
       //Adds the new row as the first row. 
       d.unshift(item); 
       $scope.$grid.grid.updateRowCount(); 
       $scope.$grid.grid.setData(d); 
        $scope.selectedRows = []; 
        $scope.selectedRows = [0]; 

       //Sets the first row and first column as editable 
       $scope.$grid.grid.setActiveCell($scope.selectedRows,0); 
       $scope.$grid.grid.gotoCell(0,0,true); 

Проблема: Все работает отлично, за исключением того, клетка остается неизменяемой. Пользователь должен вручную щелкнуть по ячейке, чтобы отредактировать ее. Как я могу сделать редактируемую ячейку сразу после добавления строки?

+0

Если '.editActiveCell' не работает, нам может понадобиться jsbin/рабочий пример проблемы, чтобы увидеть, что мешает сделать редактируемую ячейку. – kavun

+0

Решения, предоставляемые другими пользователями с помощью 'editActiveCell()', должны дать желаемый результат. Быстрый макет их в действии можно увидеть [в этом plnkr] (http://plnkr.co/edit/Au70okKiOWPqNHKEhmcr?p=preview), просто нажмите кнопку «Изменить ячейку». Если это не работает, возможно, проблема связана с кодом в пользовательском редакторе 'Slick.Acsiom.Editors.Text'. Чтобы определить, в чем проблема, требуется репликация plnkr/скрипка. –

ответ

0

Использование grid.editActiveCell - больше здесь https://github.com/mleibman/SlickGrid/wiki/Slick.Grid#wiki-editActiveCell

После установки активной ячейки, сделать его доступным для редактирования.

var grid = $scope.$grid.grid; 
var row = $scope.selectedRows[0]; 
var col = 0; 
grid.setActiveCell(row, col); 
grid.editActiveCell(Slick.Acsiom.Editors.Text); 
+0

Благодарим за быстрый ответ. Но это не делает редактируемые ячейки. Мне все еще нужно щелкнуть по ячейке, чтобы сделать ее доступной для редактирования. – SharpCoder

+0

- это '$ scope.selectedRows' число или и массив? Вам может понадобиться '$ scope. $ Grid.grid.setActiveCell ($ scope.selectedRows [0], 0);' – kavun

+0

Опять .. не повезло :( – SharpCoder

0

Имея аналогичную проблему, мне понадобились следующие три строки, чтобы открыть ячейку для редактирования.

grid.setActiveCell(row, col); 
grid.setOptions({editable: true}); 
grid.editActiveCell(grid.getCellEditor()); 

Если ячейка была подтверждена для редактирования, я использовал Booleans 'editCell' и 'cellEditOpen', и установить grid.setOptions ({редактируемой ложь}); при необходимости

+0

Благодарим вас за помощь. Даже это решение не сработало для меня – SharpCoder