gpt4 book ai didi

javascript - 多列标题 iggrid 存在 knockout 问题

转载 作者:行者123 更新时间:2023-11-28 00:34:31 25 4
gpt4 key购买 nike

我正在使用 IgniteUI 在网站上放置网格。网格使用 KnockoutJS 进行绑定(bind)。我已在应用程序中的许多网格中使用了此设置,但遇到了一个奇怪的问题。

我需要一个具有多列标题的网格,然后是另一列。我使用了多列标题,它们工作得很好。不过,在这种情况下,网格会将应位于组后面的列中的信息放置到组的第一列中,如以下 fiddle 所示:http://jsfiddle.net/rc5a4vbs/3/ 。 ColumnY 列的两行中都应该有一堆 Y,如 Javascript 中所示。

function ViewModel() {
var self = this;
self.value = ko.observable(false);
self.data = ko.observableArray([
{ "ColumnA": ko.observable(1), "ColumnD": ko.observable(21), "ColumnE": ko.observable("dkifhugb"),
"ColumnF": ko.observable(true), "ColumnG": ko.observable("false"),
"Procedure": ko.observable("Final Column"),
"TestConditionGroup": {
"ColumnY": ko.observable("YYYYYYYYYYYY"), "ColumnZ": ko.observable("ZZZZZZZZZ")
}
},
{ "ColumnA": ko.observable(2), "ColumnD": ko.observable(14), "ColumnE": ko.observable("5347347"),
"ColumnF": ko.observable(false), "ColumnG": ko.observable("string"),
"Procedure": ko.observable("Final Column"),
"TestConditionGroup": {
"ColumnY": ko.observable("yyyyyyyyyyyy"), "ColumnZ": ko.observable("zzzzzzzzzzz")
}
}
]);
self.getColumns = function() {
//debugger;
var columns = [
{ key: 'ColumnA', headerText: '', width: '0px', hidden: true },
{ key: 'ColumnD', headerText: 'Sequence', width: '100px' },
{ key: 'ColumnE', headerText: 'Iteration', width: '100px' },
{ key: 'ColumnF', headerText: 'Risk', width: '100px' },
{ key: 'ColumnG', headerText: 'Sub-Chapter Title', width: '200px' }
];
var columns2 = [
{ key: 'TestConditionGroup', headerText: 'ColumnY', width: '100px',
formatter: function(val){
return val[this.headerText];
}
},
{ key: 'TestConditionGroup', headerText: 'ColumnZ', width: '100px',
formatter: function(val){
return val[this.headerText];
}
}
];
columns.push({ key: 'TestConditionGroup', headerText: 'Test Conditions', group: columns2 });
columns.push({ key: 'Procedure', headerText: 'Procedure', width: '200px'});
return columns;
}
}

网格一直正常工作,直到我将分组列中的数据放入行对象中的对象中。这就是服务器向我发送信息的方式。当所有列都位于顶层时,它工作得很好。

通过针对提供的数据进行此设置,如何才能使数据正确显示?任何帮助将不胜感激。

最佳答案

问题不是由多列标题引起的,而是由数据中的复杂对象属性引起的。
如果要绑定(bind) ColumnY 和 ColumnZ,则必须将它们声明为未绑定(bind)列,并在格式化程序函数中从数据的 TestConditionGroup 属性中提取它们的值。您可以通过使用格式化程序函数中的第二个参数来完成此操作,该参数将为您提供对当前行数据的引用。

var columns2 = [
{ key: 'ColumnY', headerText: 'ColumnY', width: '100px', unbound: true,
formatter: function(val, row){
return row["TestConditionGroup"][this.headerText];
}
},
{ key: 'ColumnZ', headerText: 'ColumnZ', width: '100px', unbound: true,
formatter: function(val, row){
return row["TestConditionGroup"][this.headerText];
}
}];

此外,为了使 TestConditionGroup 列中的数据在格式化程序函数中可用,您必须将 localSchemaTransform 配置为 false。您需要做的最后一件事是将 autoGenerateColumns 设置为 false,因为默认情况下它是 true。
这是更新后的 fiddle 的链接: http://jsfiddle.net/rc5a4vbs/4/

关于javascript - 多列标题 iggrid 存在 knockout 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28635879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com