Программно перевести фокус на первую строку в ng-grid

В моем проекте у меня есть требование перевести фокус на первую строку ng-grid, как только сетка загрузится, и она должна перейти к следующей строке, когда я нажимаю клавишу «вниз». Я добавил следующее событие:

$scope.$on('ngGridEventData', function (e,s) {
    $scope.gridOptions.selectRow(0, true);
});

Но это событие просто выбирает первую строку, оно не фокусируется на первой строке. Строка должна быть нажата, чтобы получить фокус там. Что это за дополнительное утверждение нам нужно написать, чтобы сфокусироваться на нем?


person S. Ravi Kiran    schedule 06.07.2013    source источник


Ответы (3)


Я сообщил об этом в репозитории ng-grid на github и получил решение. Вы можете проверить обсуждение здесь: https://github.com/angular-ui/ng-grid/issues/539

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

$(".ngViewport").focus();
person S. Ravi Kiran    schedule 10.07.2013

Я смог сосредоточиться на конкретной ячейке, сделав это:

$($($(".ngCellText.col1.colt1")[0]).parent()).parent().focus();

.col1.colt1 относится ко 2-му столбцу (.col0.colt0 -> 1-й столбец)

В этом случае я выбираю 1-ю строку, 2-я строка будет выбрана с помощью:

$($($(".ngCellText.col1.colt1")[1]).parent()).parent().focus();

Это немного хакерски, но это работает.

person Gabriel    schedule 28.09.2013
comment
К вашему сведению, вам не нужно так часто вызывать $() - это то же самое, что и ваша вторая строка кода: $(".ngCellText.col1.colt1").eq(1).parent().parent().focus(); - person ken; 23.10.2013

Небольшой вариант ответа JQuery:

$('div[ng-row]').eq(2).find('.ageCell').focus()

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

person Mark Farmiloe    schedule 09.06.2014