【问题标题】:AngularJs, display function result in ui-gridAngularJs,在ui-grid中显示函数结果
【发布时间】:2018-10-16 21:03:07
【问题描述】:

我正在尝试对函数中的两列求和,然后在 ui 网格中显示它们的结果。关于如何做到这一点的任何想法,然后将 ui 网格内容保存在数据库中?

see the picture 所以在我的例子中:a 和 b 是从数据库中绑定的,而我希望 angularjs 计算它们的总和并将其添加到“Quantite reelle”列中。 这是我的网格代码 $scope.gridOptions = {

    showGridFooter: true,
    onRegisterApi: function (gridApi) {
        $scope.gridApi = gridApi;
        gridApi.core.on.renderingComplete($scope, function () {

            $timeout(function () {
                var gridBodyElem = document.getElementById(gridApi.grid.id + '-grid-container');
                gridApi.grid.element.on('mouseup', handleGridClick);
            });
        });
    }

};
$scope.gridOptions.columnDefs = [
    { name: 'Num', enableHiding: false, enableColumnMenu: false, enableCellEdit: false, width: '5%' },
    { name: 'CodeArticle', enableHiding: false, enableColumnMenu: false, displayName: 'Code Article ', width: '10%' },
    { name: 'Ref', enableHiding: false, enableColumnMenu: false, displayName: 'Référence ', width: '10%' },
    { name: 'Designation', enableHiding: false, enableColumnMenu: false, displayName: 'Désignation ', width: '30%' },
    { name: 'Stock', enableHiding: false, enableColumnMenu: false, displayName: "Qté théorique (a)", width: '13%' },
    { name: "ajust", enableHiding: false, enableColumnMenu: false, displayName: "Ajustement (b)", width: '12%' },
    { name: "sum", enableHiding: false, enableColumnMenu: false, displayName: "Quantité Réelle(a+b)", width: '14%' },
    { name: "motif", enableHiding: false, enableColumnMenu: false, displayName: "Motif", width: '20%' }
];

` 谢谢你们。

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope angular-ui-grid


    【解决方案1】:

    您需要将列字段属性设置为表达式。

    $scope.gridOptions.columnDefs = [
    {名称:“sum”,enableHiding:false,enableColumnMenu:false,字段:'CalculateSum(a,b)',displayName:“QuantitéRéelle(a + b)”,宽度:'14%'} ];

    这里 a & b 是各自的列名。

    【讨论】:

    • 函数CalculateSum(a,b) 怎么可能?我是初学者,想弄清楚如何使用 ui-grid。
    • 在 $scope.CalculateSum = function(a,b) {return a+b;}中定义它
    • 显然,该函数没有从网格中获取 a 和 b 的值。我想他们应该被称为不同的?像 row.sum 或 idk?
    • 也可以直接在字段内求和 .$scope.gridOptions.columnDefs = [ { name: "sum", enableHiding: false, enableColumnMenu: false, field:'a + b', displayName: "Quantité Réelle(a+b)", 宽度: '14%' } ];
    • 不幸的是,没有一个解决方案对我有用!列的值没有被读取。每次我使用它们时,它都会显示未定义
    【解决方案2】:

    你可以试试这个:

    $scope.gridApi.grid.columns[column a].getAggregationValue() + 
    $scope.gridApi.grid.columns[column b].getAggregationValue()
    

    【讨论】:

    • 不幸的是,没有一个解决方案对我有用!列的值没有被读取。每次我使用它们时,它都会显示未定义——当涉及到网格时,$scope 的等价物是什么?所以我可以使用指定列的值
    【解决方案3】:
     $scope.gridOptions.columnDefs = [
        { name: 'Num', enableHiding: false, enableColumnMenu: false, enableCellEdit: false, width: '5%' },
        { name: 'CodeArticle', enableHiding: false,field:'CodeArticle', enableColumnMenu: false, displayName: 'Code Article ', width: '10%' },
        { name: 'Ref', enableHiding: false,enableColumnMenu: false, displayName: 'Référence ', width: '10%' },
        { name: 'Designation', enableHiding: false, enableColumnMenu: false, displayName: 'Désignation ', width: '30%' },
        { name: 'Stock', enableHiding: false,field:'Stock', enableColumnMenu: false, displayName: "Qté théorique (a)", width: '13%' },
        { name: "ajust", enableHiding: false, field: 'ajust', enableColumnMenu: false, displayName: "Ajustement (b)", width: '12%' },
        { name: "sum", enableHiding: false, enableColumnMenu: false, field: 'CalculateSum(ajust,Stock)', displayName: "Quantité Réelle(a+b)", width: '14%' },
        { name: "motif", enableHiding: false, enableColumnMenu: false, displayName: "Motif", width: '20%' }
    ];
    
    $scope.CalculateSum = function (ajust, Stock) {
    
    
        return ajust + Stock;
    };
    

    【讨论】:

      【解决方案4】:

      Tutorial: 323 More Binding examples 之后,我创建了一个Plunker,使用过滤器calculateSum 来计算两个字段的总和。

      angular.module('app', ['ngAnimate', 'ngTouch', 'ui.grid'])
        .controller('MainCtrl', MainCtrl)
        .filter('calculateSum', function () {
        return function (input, a, b) {
          return input[a]+input[b];
        };
      });;
      
      MainCtrl.$inject = ['$http', 'uiGridConstants'];
      
      function MainCtrl($http, uiGridConstants) {
        var vm = this;
      
        vm.gridOptions = {
          enableFiltering: true,
          onRegisterApi: function(gridApi){
            vm.gridApi = gridApi;
          },
          columnDefs: [
            { field: 'name'},
            { field: 'num1'},
            { field: 'num2'},
            { name: 'sum', field: uiGridConstants.ENTITY_BINDING, cellFilter: 'calculateSum:"num1":"num2"' }
          ]
        };
      
        $http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json')
          .then(function(response) {
            response.data.forEach(function(row){
              row.num1 = row.age;
              row.num2 = row.age*2;
            });
            vm.gridOptions.data = response.data;
          });
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 2014-09-16
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 2016-02-01
        相关资源
        最近更新 更多