Javascript 刷新用户界面网格后,所选项目不会重置

Javascript 刷新用户界面网格后,所选项目不会重置,javascript,angularjs,angular-ui-grid,Javascript,Angularjs,Angular Ui Grid,我有一个功能,我必须选择ui网格中的行(ui网格选择)并对其执行操作,这反过来会更改网格数据(选定行中的字段) 为了重新加载更改的数据,我再次调用ajax。这会刷新数据,但它存储的是最后一个selectedrows,不允许在刷新的网格上再次执行操作。我在GridFooter的帮助下发现了此问题,其中selectedItems在刷新后未重置为0 // Getting Selected rows onRegisterApi : function(gridApi){

我有一个功能,我必须选择ui网格中的行(ui网格选择)并对其执行操作,这反过来会更改网格数据(选定行中的字段)

为了重新加载更改的数据,我再次调用ajax。这会刷新数据,但它存储的是最后一个selectedrows,不允许在刷新的网格上再次执行操作。我在GridFooter的帮助下发现了此问题,其中selectedItems在刷新后未重置为0

// Getting Selected rows

onRegisterApi : function(gridApi){

                // Set gridApi on scope
                $scope.gridApi = gridApi;


                gridApi.selection.on.rowSelectionChanged($scope,function(row){
                    var msg = 'row selected ' + row.isSelected;
                    console.log(msg);
                    $scope.mySelectedRows= $scope.gridApi.selection.getSelectedRows();  
                    console.log( $scope.mySelectedRows);

                });

            }
如何使selectedItems在以下刷新后重置为0

这是我的刷新功能。另外,如果有更好的方法,请告诉我

// Refreshing Grid data

    $scope.refresh= function(){     

        $http.post("WS/querybuilder", $rootScope.wholecond).success(function(data){

            console.log("hitting the service");
            $scope.myData=data; //Passing data to my grid
            //$scope.mySelectedRows=[];         
            //console.log($scope.myData);
        });
        //$scope.$apply();
    }

只需通知网格api的更改类型,即可解决此问题。您不必使用刷新方法

$scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);

这将通知刷新表。您还可以使用其他类型的事件-(全部、行、编辑、列)

这是重置/清除ui网格中选定行的正确方法

$scope.gridApi.selection.clearSelectedRows()

尝试在刷新功能中清除选定行

// Refreshing Grid data

$scope.refresh= function(){     

    $http.post("WS/querybuilder", $rootScope.wholecond).success(function(data){

        console.log("hitting the service");
        $scope.myData=data; //Passing data to my grid
        $scope.gridApi.selection.clearSelectedRows();
        //$scope.mySelectedRows=[];         
        //console.log($scope.myData);
    });
    //$scope.$apply();
}
如果这不起作用,您可以通过迭代所有行并将其设置为false来强制执行,如:

     $scope.gridApi.grid.rows.map(function (row) {
                row.setSelected(false);
            }
        });
    });

但是clearSelectedRows()应该可以工作。

网格数据刷新后未重置的选定项目数似乎是网格代码中的一个错误

我遇到了同样的问题,在阅读了源代码之后,在加载新数据之前,通过在网格上调用
selection.clearSelectedRows()
解决了这个问题