如何动态更改剑道树列表的列集合集?

问题描述 投票:0回答:1

尝试通过查询动态更改列列表...

[当我构造TreeList时,我要求列:

$("#treelist").kendoTreeList({
        columns: AnalyseCenterSKUService.getKPIColumnList($scope)

如果我返回带有字段的简单数组,则它正在工作..

如果我调用$http.get(在我的getKPIColumnList(..)函数内部)将一些列添加到现有的列数组中,则TreeList的构造不正确。

任何建议将不胜感激! :)

EDIT 22-10-2019 09:00

树列表初始化

$("#treelist").kendoTreeList({
        columns: AnalyseCenterSKUService.getKPIColumnList($scope), 
        scrollable: true,
        columnMenu : {
            columns : true
        },
        height: "100%", 
        dataBound: function (e) {
            ExpandAll();
        },
        dataSource: {
            schema: {
                model: {
                    id: "id",
                    parentId: "parentId",
                    fields: {
                        id: { type: "number" },
                        parentId: { type: "number", nullable: true },
                        fields: {
                            id: { type: "number" },
                            parentId: { type: "number", nullable: false }
                        }
                    }
                }
            },
            transport: {
                read: {

                    url: "/api/AnalyseCenter/GetWorkOrderTree/0",
                    dataType: "json"
                }
            }
        }

[getKPIColumnList返回一个静态数组+一些带有动态列的推送(来自数据库)

angular.module('AnalyseCenterDirectives')
.service ('AnalyseCenterSKUService', function ($http) {

        var toReturn = [ {field: "Name", title: "Hiérachie SKU", width: "30%" }, ..., ..., .... ];

我尝试使用此功能来推送数据库结果

    return $http.get("/api/AnalyseCenter/GetWorkOrderHistorianAdditonalColumns?equipmentName=" + equipmentName)
             .then(function (result) {
                 var data = result.data;
                 if (data && data !== 'undefined') {
                     var fromDB = data;


                     angular.forEach(fromDB, function (tag) {
                         var tagName = tag.replace(".","_");
                         toReturn.push({                                 
                              field: tagName, title: tag, width: '10%',
                              attributes: { style: "text-align:right;"}                                                         })
                        })

[存储过程GetWorkOrderHistorianAdditonalColumns返回字符串列表(将来的列)

dynamic kendo-ui treelist
1个回答
0
投票

那是因为ajax is async,这意味着您的树列表正在初始化中[[before请求完成。 JavaScript新手的经典问题。我建议您花些时间阅读有关Ajax的信息,例如How does AJAX works

回到您的问题。您需要在

success回调中创建树形列表(由于我不知道您在函数内部正在做什么或用于打开该框架的框架,因此我无法为您提供更完整的解决方案ajax请求)与结果数据(可能是您的列)一起使用。然后它将像使用数组初始化它一样工作。

© www.soinside.com 2019 - 2024. All rights reserved.