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