2015-04-14 7 views
1

Я использую сетку Angular-UI Grid и расширяемую ui-сетку. Можно ли выбрать строку родительской сетки, если выбрана одна строка расширяемой (дочерней) сетки? Если по крайней мере мне не нужен доступ к родительской сетке/строке в событии rowSelectionChanged под- (расширяемой) сетки, похоже, у нее нет собственной области видимости?Угловая UI-сетка expandableRow selectionChange update parent

gridApi.selection.on.rowSelectionChanged($scope, function (rows) { 
      var selectedRows=gridApi.selection.getSelectedRows(); 
      ... 
      //select parent grid row here... 
       }); 

ответ

3

Да, есть способ сделать это. Вам просто нужно пройти назад, чтобы получить доступ к родительской строке и сетке api родительской строки. Помните, что appScope всегда ссылается на родительскую область сетки. Таким образом, в вашей расширяемой дочерней сетке эта родительская область содержит объект строки.

В обработчике дочерней сетки onRegisterApi вы можете получить доступ к родительской строке с помощью: row.grid.appScope.row. Затем вы можете выбрать родительскую строку: row.grid.appScope.row.grid.api.selection.selectRow(row.grid.appScope.row.entity)

Вот пример кода, который очищает его немного:

onRegisterApi: function (api) { 
    api.selection.on.rowSelectionChanged($scope, function (row, event) { 
    var parentRow = row.grid.appScope.row; 
    if (api.selection.getSelectedRows().length > 0) { 
     parentRow.grid.api.selection.selectRow(parentRow.entity); 
    } 
    else { 
     parentRow.grid.api.selection.unSelectRow(parentRow.entity); 
    } 
    }); 
} 

И демо plunker: http://plnkr.co/edit/7HFHPTtmcXvgoJCKiRTd?p=preview

+0

Благодаря Брайан, отлично работает. – user250773

+0

@ user250773 рад, что это сработало для вас! – c0bra

+0

связанный вопрос, который только что появился: что является решением противоположного варианта использования, я хочу отменить выбор дочерних/расширенных строк, когда родительская строка не выбрана? – user250773

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