Ag-grid 未将行焦点保持在表刷新上



>我有一个每隔几秒钟刷新一次数据的 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.column 更改为 cell.column.colId

好的,看起来这适用于我想要做的事情; 而不是单元格焦点,我需要将节点本身设置为选定的 = true...我可以发誓我之前已经这样做了,甚至验证了它是否设置为true,但无论哪种方式,这段代码都实现了预期的结果:

                    $scope.ResourceCheckoutTableGrid.api.forEachNode((node) => {
                        if (node.childIndex === ($scope.selectedRowNode.childIndex)) {
                            node.setSelected(true);
                            return;
                        }
                    });

最新更新