动态填充ui网格中的Dropdownlist

时间:2017-06-12 08:56:25

标签: angularjs ui-grid

我花了很多时间寻找解决方案,但每次找到解决方案都没有成功,最终得到的静态数据不是来自任何Web API或数据库。我希望在UI网格的下拉列表中填充动态数据。我在一个博客中读到了一个人说动态数据,我们必须使用 editDropdownRowEntityOptionsArrayPath ,但我找不到任何有用的解决方案。任何人都可以提供任何有用的信息,而不是我会感激不尽。提前致谢。这就是我所做的。

             $scope.listOptions = []; $scope.ddlist = [];
        $http.get('http://localhost:26413/api/MenuVDN/GetVDNList')
        .then(function (data) { 
            $scope.listOptions = data;
            $scope.ddlist = $scope.listOptions.data.Table;
            console.log($scope.ddlist);
        })
        $scope.gridOptions = {
            enableColumnResizing: true,
            enableSorting: true,
            enableCellSelection: true,
            canSelectRows: true,
        //    enableCellEdit: true,
            columnDefs: [
            { field: 'NameEn', displayName: ' Menu Name', grouping: { groupPriority: 0 }, sort: { priority: 0, direction: 'asc' }, width: '25%' },
            { field: 'id', displayName: 'ID' },
            { field: 'language', displayName: 'VDN Language', grouping: { groupPriority: 1 }, sort: { priority: 1, direction: 'asc' } },
            { field: 'vdnname', displayName: 'VDN Name'  },
            {
                field: 'vdnnum', displayName: 'VDN Number',
                editableCellTemplate: 'ui-grid/dropdownEditor',
               // editDropdownIdLabel: 'id',
                editDropdownValueLabel: 'value',
             //   enableFocusedCellEdit: true,
                enableCellEditOnFocus :true,
                enableCellEdit: true,
                editType: 'dropdown',
                editDropdownRowEntityOptionsArrayPath : $scope.ddlist
  //             ,  cellEditableCondition: function( $scope ) { return true; }
            }
            ]
        };

加上我得到了像这样的json格式的webapi响应。

{"Table":[{"id":2,"value":"AR-BOOKING-NEW (7101)"},
{"id":3,"value":"EN-BOOKIN-NEW (7102)"},
{"id":4,"value":"AR-BOOKING-CANCEL (7103)"},
{"id":5,"value":"EN-BOOKING-CANCEL (7104)"},
{"id":6,"value":"AR-BOOKING-MODIFY (7105)"}]}

1 个答案:

答案 0 :(得分:0)

    $scope.columns = completedFiles.columns;
    $scope.rows = completedFiles.rows;
    //prepare custom column for ui-grid
    var customColumns = [];

angular.forEach($scope.columns, function(column) {
            customColumns.push({
                field : column.fieldName,
                displayName : column.displayName,
                editable : column.editable,
                dataType : column.dataType,                   
            });
        }
});

angular.forEach(customColumns, function(customColumn) {
        customColumn['width'] = 200;
        if (customColumn.dataType === 'dropDown') {
            customColumn['cellTemplate'] = "<div class='ui-grid-cell-contents' id='col-description'><select class="form-control" data-ng-options="item in grid.appScope.arrayName track by item" ><option value="" selected hidden />/></select></div>";
            customColumn['width'] = 180;
        }
    });

您可以像上面那样创建自定义模板,之后只需将$ scope.gridOptions customColumns分配给columnDefs,而不是在那里定义列定义。