我使用Angular-UI Grid和ui-grid-expandable选项。如果选择了可展开(子)网格的一行,是否有选项也可以选择父网格行?如果不是至少我需要访问子(可扩展)网格的 rowSelectionChanged 事件中的父网格/行,它似乎没有自己的范围?
gridApi.selection.on.rowSelectionChanged($scope, function (rows) {
var selectedRows=gridApi.selection.getSelectedRows();
...
//select parent grid row here...
});
是的,有一种方法可以做到这一点。您只需向后走上范围即可访问父行和父行的网格 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);
}
});
}
还有一个演示弹道机:http://plnkr.co/edit/7HFHPTtmcXvgoJCKiRTd?p=preview