web-dev-qa-db-fra.com

Où puis-je obtenir Angular sélectionnés de la grille ui

Test de Angular ui-grid (ng-grid v.3.0). Ne peut pas pour la vie de moi trouver la ligne sélectionnée. Je veux juste saisir les lignes ou même l'ID de la ligne lorsqu'un utilisateur clique dessus. J'ai trouvé le commentaire en haut ici mais je pense que c'est obsolète: Obtenir des lignes sélectionnées dans ng-grid?

Est-ce que quelqu'un sait où le gridOptions.selectedItems Est stocké dans la version 3.0?

35
Mlalahoi

Est-ce ce que vous cherchez? http://ui-grid.info/docs/#/tutorial/210_selection

  1. Activer les fonctionnalités de sélection de grille avec la balise ui-grid-selection (et l'enregistrement du module ui.grid.selection dans votre application)
  2. inscrivez gridApi et utilisez gridApi.selection pour accéder à getSelectedRows ()
34
Sycomor

En plus des étapes ci-dessus https://stackoverflow.com/a/26188783/2658127 , vous devrez peut-être l'appeler via un événement ng-click pour obtenir la valeur/l'objet réel. Au moins c'est comme ça que j'ai fonctionné.

Eg:
$scope.selectRow = function(){
    $scope.gridApi.selection.getSelectedRows();
};

Et appelez selectRow () à partir du modèle.

Ceci s'adresse à tous ceux qui ont été déroutés comme moi, compte tenu du fait que ui-grid n'a pas la meilleure documentation (spécialement pour cette partie sélectionnée).

23
Rajush

L'approche la plus simple est:

  1. Enregistrez la gridApi en ajoutant ceci à votre contrôleur:

    $scope.gridOptions.onRegisterApi = function(gridApi) { $scope.myGridApi = gridApi; };

  2. Accédez au tableau des éléments sélectionnés:

    $scope.myGridApi.selection.getSelectedRows();

16
Arashsoft

Avec grid ui, vous devez utiliser le selection.on.rowSelectionChanged pour mettre à jour une variable de portée qui stocke le selectedItem. De cette façon, vous pouvez utiliser la valeur dans une expression de liaison.

var SelectController = function($scope) {
    ...
    $scope.selectedItem = null;

    $scope.gridOptions = {
            data : 'articles',
            enableRowSelection : true,
            multiSelect : false,
            enableRowHeaderSelection : false,
            ...
        };

        $scope.gridOptions.onRegisterApi = function(gridApi) {
            // set gridApi on scope
            this.$scope.gridApi = gridApi;
        }.bind(this);
        $scope.gridOptions.onRegisterApi = function(gridApi) {
            // set gridApi on scope
            this.$scope.gridApi = gridApi;
            this.$scope.gridApi.selection.on.rowSelectionChanged($scope,
                    function(row) {
                        this.$scope.selectedItem = row.entity;
                    }.bind(this));
        }.bind(this);

Utilisez un tableau au lieu d'un objet brut si vous avez besoin d'une sélection multiple.

0
Panciz