Angular JS - UI Grid EnableFullRowSelection rowSelectionChanged事件

时间:2015-09-23 11:47:46

标签: angularjs angular-ui-grid

我正在使用ui-grid作为网格。我想创建一个网格,其中包含数据库中的一些列和一个按钮的额外列。

    $scope.studentgrid = {
    data: 'students',
    enableFiltering: false,
    onRegisterApi: function(gridApi){
        $scope.gridApi = gridApi;
        $scope.gridApi.grid.registerRowsProcessor( $scope.singleFilter, 200 );
    },

    enableRowSelection: true,
    multiSelect: false,
    enableColumnResizing: true,
    enableSelectAll:true,
    enableCellEdit: false,
    enableFullRowSelection: true,
    enableCellEditOnFocus: false,        
    columnDefs: [
        { field: 'ID'},
        { field: 'name'},
        { field: 'age' },
        { field: 'email', displayName: 'Email(Sorting Disabled)', enableSorting: false },
        { field: 'Change', cellTemplate: '<div><button ng-click="grid.appScope.genalert()">Click Here</button></div>'}
    ]
};

在ui-grid中,我在事件rowSelectionChanged

上注册了一个回调函数
$scope.studentgrid.onRegisterApi = function (gridApi) {
    $scope.gridApi = gridApi;
    gridApi.selection.on.rowSelectionChanged($scope, function (row) {
        alert(row.isSelected);
    });
};

每次单击按钮时,rowSelectionChanged事件都会触发。当我点击按钮时,如何停止触发rowSelectionChanged事件?我需要enableFullRowSelection为真。

1 个答案:

答案 0 :(得分:0)

我还没有办法吞下rowSelectionChanged事件。我确实找到了解决它的方法,这在你的特定情况下可能有用,也可能没用。在我的情况下,我在rowSelectionChange上发生了一个特定的操作,我希望在单击按钮时防止发生这种情况。如果这对你有用,我就是这样做的。

更改您的cellTemplate以包含buttonClicked布尔值:

cellTemplate: '<div><button ng-click="grid.appScope.buttonClicked = true;grid.appScope.genalert()">Click Here</button></div>'

然后在你的rowSelectionChanged声明中:

gridApi.selection.on.rowSelectionChanged($scope, function (row) {
    if (!this.grid.appScope.buttonClicked) {
        alert(row.isSelected);
    }
    this.grid.appScope.buttonClicked = false;
});