2

Я получаю новую строку в раскрывающемся списке Нажмите и пользуюсь enableCellEditOnFocus, и когда я пытаюсь открыть раскрывающийся список, он не открывается, а альтернативные выпадающие списки работают правильно. Чтобы избежать путаницы, я изменил код, и я показываю этот код, который дает мне ошибку, и вот my plunker.Выпадающий вскрытие проблемы внутри ui-grid

Это мой объект пользовательского интерфейса сетки

$scope.gridOptions = { 
enableCellEditOnFocus: true 
}; 
    $scope.gridOptions.columnDefs = [ 
{ name: 'gender', displayName: 'Gender', editableCellTemplate: 'ui-grid/dropdownEditor', width: '20%', 
    editDropdownValueLabel: 'gender', editDropdownOptionsArray: [ 
    { id: 1, gender: 'male' }, 
    { id: 2, gender: 'female' } 
] } ]; 

добавить новую строку, используя этот код:

$scope.addNewRow = function() { 
    $scope.gridOptions.data.push({ 
    "gender": "male"}); 
}; 
//adding new row inside of uigrid 
$scope.newRow = function (row, columnIndex) { 
    tempIndexSave = ""; 
    tempIndexSave = _.indexOf($scope.gridOptions.data, row); 
    var length = $scope.gridOptions.data.length; 
    if (length - 1 == tempIndexSave) { 
     $scope.addNewRow(); 
    } 
}; 
+0

Функциональность, которую вы пытаетесь достичь, не является прямой. Вы хотите добавить новую строку, когда пользователь начнет редактировать существующую строку? Если да, то зачем вам эту функцию? Почему вы не можете отделить добавление новой части строки от редактирования? Может быть, у вас может быть кнопка для добавления новой строки ... –

+0

@GaneshKumar актуально, что требование клиентов, он хочет, чтобы и ниже этой сетки у меня есть одна кнопка сохранения, которая сохраняет все данные сетки –

+0

Так каждый раз, когда пользователь нажимает на в раскрывающемся списке вы хотите добавить новую строку? –

ответ

1

Проблема обусловлена ​​these lines, где вы можете увидеть, что есть хак для чтения с экрана ,

Этот хак может принести проблемы, схожие с вашими, потому что это зависит от beginCellEdit и afterCellEdit событий уволят равномерно и с фиксированным рисунком:

  • beginCellEdit
  • afterCellEdit
  • beginCellEdit
  • afterCellEdit
  • beginCellEdit

...

Добавление новой строки в то время как уже редактирует подряд нарушает эту картину, так как для новой созданной строки, вам не хватает beginCellEdit, поэтому функция preventMouseDown будет всегда огонь, предотвращая взаимодействие с пользователем ,

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

Обходной путь состоит из поднятия подделки beginCellEdit при добавлении строки, как вы можете видеть в this updated plunkr.

... 
if (length - 1 == tempIndexSave) { 
    $scope.addNewRow(); 
    $scope.gridApi.edit.raise.beginCellEdit(); 
} 
... 
+0

Спасибо, друг ... это ват я хотел :) –

Смежные вопросы