angular-slickgrid, вызвать редактирование ячейки при событии выбора редактора - PullRequest
0 голосов
/ 24 октября 2019

Я использую angular-silkgrid с angular 7. Я использую встроенную функцию редактирования. Я использую один редактор выбора для встроенного редактирования. В настоящее время я хочу добиться этой функциональности:

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

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

editor: {
  // display checkmark icon when True
  enableRenderHtml: true,
  // tslint:disable-next-line:max-line-length
  collection: [{
    value: 1,
    label: 'Sucessful'
  }, {
    value: 2,
    label: 'Unsucessful'
  }],
  model: Editors.singleSelect, // CustomSelectEditor
  elementOptions: {
    autoAdjustDropPosition: false,
    onClick: (event, rr) => {
      // here i want to write some code which can trigger to grid to start update
    }
  }
}

Ответы [ 3 ]

1 голос
/ 25 октября 2019

Спасибо всем за ответы. Я решил свою проблему, как показано ниже:

   editor: {
      enableRenderHtml: true,
      collection: [{ value: CCLStaus.Sucessfull, label: 'Sucessful' }, { value: CCLStaus.UnSucessfull, label: 'Unsucessful' }],
      model: Editors.singleSelect,// CustomSelectEditor
      elementOptions: {
        onClick: (event) => {
          const updateItem = this.angularSilkGrid.gridService.getDataItemByRowIndex(this.rowInEditMode);
          updateItem.status = +event.value;
          this.angularSilkGrid.gridService.updateItem(updateItem, { highlightRow: false });
          this.angularSilkGrid.gridService.renderGrid();
        }
      }
    }
0 голосов
/ 25 октября 2019

В Angular-Slickgrid Пример редактора в примере есть флажок auto commit, и вам необходимо включить этот параметр в параметрах сетки

this.gridOptions = {
  autoEdit: true,
  autoCommitEdit: true,
}

. lib внутренне вызовет grid.getEditorLock().commitCurrentEdit(), как написал Бен в своем ответе, в Angular-Slickgrid вы можете просто установить добавленный мной флаг autoCommitEdit.

0 голосов
/ 24 октября 2019

Обычно

grid.getEditorLock().commitCurrentEdit()

фиксирует и закрывает редактор. Кроме того, любой из

grid.navigateRight()
grid.navigateLeft()
grid.navigateDown()
grid.navigateUp()
grid.navigateNext()
grid.navigatePrev()

будет совершаться и корректно завершаться. В редакторе select2 вы заметите:

    this.init = function () {
      ...

      // Set focus back to select2 element on closing.
      $input.on('select2:close', function (e) {
        if ((e.params.originalSelect2Event && e.params.originalSelect2Event.data) 
        || e.params.key === 9) {
          // item was selected with ENTER or no selection with TAB
          args.grid.navigateNext();
        } else {
          // closed with no selection
          setTimeout(function () {
            $input.select2('focus');
          }, 100);
        }
      });
    };

    this.destroy = function () {
        $input.select2('destroy');
        $input.remove();
    };

, отметив, что args.grid.navigateNext() подтвердит и закроет редактор, включая вызов метода destroy() в соответствующее время.

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