尝试通过查询动态更改列列表...
当我构造 TreeList 时,我调用列:
$("#treelist").kendoTreeList({
columns: AnalyseCenterSKUService.getKPIColumnList($scope)
如果我返回一个带有字段的简单数组,它就可以工作..
如果我调用一个$http.get
(在我的getKPIColumnList(..(函数中(,它将一些列添加到现有的列数组中,则TreeList构造不正确。
任何建议将不胜感激! :)
编辑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
返回字符串列表(将来的列(
这是因为 ajax是异步的,这意味着您的树列表在请求完成之前正在初始化。对于 JavaScript 新手来说,这是一个经典的问题。我建议你花点时间阅读一下ajax,比如AJAX是如何工作的。
回到你的问题。您需要在成功回调中创建树列表(我无法为您提供更完整的解决方案,因为我不知道您在函数中做什么,或者您使用哪个框架来打开该 ajax 请求(与结果数据,这可能是您的列。然后它会像你用数组初始化它一样工作。