component columndefs javascript angularjs angular-ui-grid

javascript - component - ui-grid columndefs



evento ui-grid angular: fila seleccionada (3)

En ui-grid, registra una función de devolución de llamada en el evento "rowSelectionChanged"

$scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.selection.on.rowSelectionChanged($scope, callbackFunction); gridApi.selection.on.rowSelectionChangedBatch($scope, callbackFunction); } } function callbackFunction(row) { var msg = ''row selected '' + row.isSelected; $log.log(msg); })

Creo que deberías echar un vistazo a la página de tutoriales en ui-grid: http://ui-grid.info/docs/#/tutorial/210_selection . La página API apesta, en mi opinión :(.

Estoy intentando habilitar / deshabilitar un botón basado en la selección de una fila en un ui-grid. Si no hay filas seleccionadas, el botón está deshabilitado.

Encontré este plunkr con la antigua forma ng-grid de disparar un evento después de seleccionar una fila.

$scope.gridOptions = { data: ''myData'', selectedItems: $scope.selections, enableRowSelection: true, afterSelectionChange:function() { if ($scope.selections != "" ) { $scope.disabled = false; } else { $scope.disabled = true; } } };

Desafortunadamente, no funciona, y no he encontrado ninguna señal de tal evento en la documentation ui-grid.

¿Cómo puedo lograr eso con ui-grid?


Primero puede obtener todos los registros seleccionados en la grid actualmente haciendo:

$scope.rowsSelected = $scope.gridApi.selection.getSelectedRows();

Ahora podemos obtener la longitud de esta matriz usando:

$scope.countRows = $scope.rowsSelected.length;

basado en $scope.countRows>0 o 0 puede habilitar o deshabilitar un botón usando

ng-disabled = "countRows"


$scope.countRows=0; $scope.gridOptions.onRegisterApi = function(gridApi){ $scope.gridApi = gridApi; gridApi.selection.on.rowSelectionChanged($scope, function(row){ $scope.countRows = $scope.gridApi.selection.getSelectedRows().length; }); gridApi.selection.on.rowSelectionChangedBatch($scope, function(row){ $scope.countRows = $scope.gridApi.selection.getSelectedRows().length; }); };

En el lado HTML puedes usar algo como esto

<button class="custom-button" ng-disabled="countRows<=0" ng-click="submit()">Details</button>