我有extjsgrid.Panel,并且我尝试模拟当连续行的第一列中存在重复数据时行中的单元格合并。使用列呈现器,如果某行的第一列值与前一行的值重复,则清除该值。我希望修改前一行的第一个单元格的tdAttr,以使行跨越适当的行数。我不知道如何到达前一行。'下面是我目前的渲染器代码。
renderer: function(value, metaData, record, row, col, store, gridView){
var dataIndex = metaData.column.dataIndex;
var overrideValue = value;
// check previous rows and determine whether this row's first column has the same
// value as a previous row's first column
if (col == 0){
var i = row-1;
while (i >= 0 && overrideValue != ""){
if (store.data.items[i].get(dataIndex) == value){
overrideValue = "";
// ----- here i want to update record i's metaData...
// metaData.tdAttr = 'rowspan=' + row-i+1
}
i--;
}
}
return overrideValue;
}
我尝试了很多方法来获取与记录关联的元数据,但是都不成功。gridView对象的getnodes和getnode方法返回undefined。
1条答案
按热度按时间1zmg4dgp1#
我创建了以下解决方案。我使用了列呈现器和视图侦听器的组合,特别是“viewready”。网格的行线设置为“false”,我使用列呈现器应用自定义样式来替换行线,并清除相应的单元格值。我在“viewready”侦听器中修改了“合并”单元格的背景颜色。
and the result...