【发布时间】:2018-09-23 02:27:12
【问题描述】:
我有一个 ag-grid 表,它每隔几秒刷新一次数据。每当它这样做时,选定的表格行就会失去焦点,我试图找出一种方法来强制焦点回来。我认为这就像跟踪所选节点一样简单,然后在刷新发生时设置值,但它似乎不起作用。基本上,每当用户在表格中进行选择时,我都会跟踪节点和焦点单元格:
function onSelectionChanged() {
var selectedRowNode = $scope.ResourceCheckoutTableGrid.api.getSelectedNodes()[0];
$scope.focusedCell = $scope.ResourceCheckoutTableGrid.api.getFocusedCell();
$scope.selectedRowNode = selectedRowNode;
}
然后,我每三秒加载一次表格数据:
$scope.startRefresh = function() {
setInterval(function() {
$scope.loadTableData();
},3000)
}
重新加载表格数据时,它会失去焦点,但我尝试使用保存的值将其恢复:
$scope.loadTableData = function() {
$http.get('RobotDataInterface/Resource/getAllCheckedOutResources').success(
function(data) {
$scope.rowCount = data.length;
if ($scope.ResourceCheckoutTableGrid.api != undefined) {
$scope.ResourceCheckoutTableGrid.api.setRowData(data);
$scope.ResourceCheckoutTableGrid.api.sizeColumnsToFit();
var node = $scope.selectedRowNode;
var cell = $scope.focusedCell;
if (node != "" && cell != "") {
node.setSelected(true);
$scope.ResourceCheckoutTableGrid.api.setFocusedCell(cell.rowIndex, cell.column);
}
}
});
};
如果我设置断点,我可以看到当它进行这些调用时:
node.setSelected(true);
$scope.ResourceCheckoutTableGrid.api.setFocusedCell(cell.rowIndex, cell.column);
我可以看到这些值是我所期望的;节点和焦点单元格、rowIndex 等是我所期望的,但所选行仍然失去焦点(即使它实际上确实设置为 'selected = true'。有谁知道我做错了什么?
【问题讨论】:
-
setFocusedCell(cell.rowIndex, cell.column) 应该是 setFocusedCell(cell.rowIndex, cell.column.colId) ..它应该 colId 而不是 column 或使用 cell.column.getColId()
-
@NagaSaiA 谢谢,这让我更进一步 - 它现在似乎保留了单元格焦点(即使在刷新后单元格也会突出显示)但是被突出显示的行永远不会回来,只是单元格,如果这有意义吗?
-
能否请您将其更具体或截图以方便调试?
-
@NagaSaiA 其实我好像打错了电话,我会更新答案,谢谢你的帮助!
-
我已将我的评论作为设置焦点的答案发表,如果对您有帮助请标记为答案
标签: javascript angularjs ag-grid