多列标题iggrid与淘汰问题
multi column headers iggrid with knockout issue
我正在使用IgniteUI在站点上放置网格。使用KnockoutJS绑定网格。我在应用程序中的许多网格中都使用了这种设置,但我遇到了一个奇怪的问题。
我需要一个有多列标题的网格,然后是另一列。我使用了多列标题,它们运行良好。然而,在这种情况下,网格将把组后面的列中的信息放在组的第一列中,如图所示: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;
}
}
在我将分组列中的数据放入行对象中的对象之前,网格一直工作正常。这就是服务器向我发送信息的方式。当所有的柱子都在顶层时,效果很好。
如何通过对所提供数据的设置使数据正确显示?如有任何帮助,我们将不胜感激。
问题不是由多列标题引起的,而是由数据中的复杂对象属性引起的
如果要绑定ColumnY和ColumnZ,则必须将它们声明为未绑定列,并在格式化程序函数中从数据的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/
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 多列标题iggrid与淘汰问题
- 淘汰计算与订阅、时间问题
- 淘汰/MVVM 设计问题
- 在 if 语句中淘汰奇怪的绑定问题
- 在viewModel之前注册淘汰组件的问题
- 淘汰数据绑定问题
- IE8绑定的淘汰问题
- 淘汰简单的约束问题
- 淘汰验证问题
- 淘汰赛中的十进制值舍入问题
- 淘汰复选框问题
- 嵌套对象中$parent的淘汰问题
- 淘汰“闪烁”问题
- 将嵌套的淘汰视图模型解析为JSON时出现问题
- 淘汰验证自定义消息模板的问题