刷新Angular UI Grid后,所选项目不会重置

时间:2015-06-29 12:08:32

标签: javascript angularjs angular-ui-grid

我有一个功能,我必须选择ui网格中的行(ui-grid-selection)并对它们执行操作,这反过来又会更改网格数据(所选行中的字段)。

要重新加载已更改的数据,我再次进行ajax调用。这会刷新数据,但是它存储的最后一个选中的列不允许在刷新的网格上再次执行操作。我在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();
    }

4 个答案:

答案 0 :(得分:1)

这是重置/清除所选行的ui-grid

的正确方法
$scope.gridApi.selection.clearSelectedRows()

答案 1 :(得分:0)

只是通知网格api的更改类型,将解决此问题。你不必使用你的刷新方法。

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

这将通知表上的刷新。您还可以使用其他类型的事件 - (ALL,ROW,EDIT,COLUMN)

答案 2 :(得分: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.gridApi.selection.clearSelectedRows();
        //$scope.mySelectedRows=[];         
        //console.log($scope.myData);
    });
    //$scope.$apply();
}

如果这不起作用,你可以通过迭代所有行并将它们设置为false来强制执行,例如:

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

但clearSelectedRows()应该有效。

答案 3 :(得分:0)

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

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