Angular JS UI-Grid Delete Row

后端 未结 5 506
野趣味
野趣味 2021-02-05 16:47

I\'m new to ui-grid and I\'m trying to implement a table in AngularJS as shown in the picture below. I\'m trying to select a row and delete it using a delete button

相关标签:
5条回答
  • 2021-02-05 17:26

    The other solutions provided here didn't worked for me(May be because of my latest different version of ui-grid). So removing element from the scope array worked for me. This should even work with other versions of ui-grid because grid must be updated when the data changes. (Thanks to Angular!!!)

    I am using lodash to remove element from array and here is sample code:

    $scope.deleteRow = function(row){
        _.remove($scope.gridData, {
            id: row.id
        });
    };
    
    0 讨论(0)
  • 2021-02-05 17:37

    You can use @Blousie solution as far as you adapt it to the newer API: https://github.com/angular-ui/ng-grid/blob/master/3.0_UPGRADE.md

    Now "grid.appScope.edit(row.entity)" gives you access to your scope's "edit" function.

    Something like this:

    var removeTemplate = '<button class="btn btn-danger" ng-click="grid.appScope.removeRow(row)"><i class="glyphicon glyphicon-remove"></i></button>';
    
    $scope.removeRow = function(row) {
        var index = $scope.<yourDataModelProperty>.indexOf(row.entity);
        if (index !== -1) {
            $scope.<yourDataModelProperty>.splice(index, 1);
        }
    };
    
    0 讨论(0)
  • 2021-02-05 17:39

    Just remove the row you want to delete from ui-grids data source model using splice.

    For example

    $scope.myGridOptions.data.splice(<YOUR ROW INDEX HERE>, 1);
    
    0 讨论(0)
  • 2021-02-05 17:41

    We need to use the $scope.grid.appScope. It is available in all templates. Besides that, you need to send the row object from the template, so that you can delete the row from the grid data.

    jsfiddle: http://jsfiddle.net/3ryLqa9e/4/

      cellTemplate:'<button class="btn primary" ng-click="grid.appScope.Delete(row)">Delete Me</button>' 
    
      $scope.Delete = function(row) {
                var index = $scope.gridOptions.data.indexOf(row.entity);
                $scope.gridOptions.data.splice(index, 1);
            };
    
    0 讨论(0)
  • 2021-02-05 17:45

    Please see a working example of how to delete a row here. http://plnkr.co/edit/6TiFC6plEMJMD4U6QmyS?p=preview

    The key is to use indexOf(row.entity) and not relying on row.index as it doesn't dynamically get updated.

    $scope.deleteRow = function(row) {
      var index = $scope.gridOptions.data.indexOf(row.entity);
      $scope.gridOptions.data.splice(index, 1);
    };
    

    Generic approach

    function deleteRow(row,grid) {
       var i = grid.options.data.indexOf(row.entity);
       grid.options.data.splice(i, 1);
    }
    
    0 讨论(0)
提交回复
热议问题