1.方案一的关键源码分析:
function OnReady(id)
{
if(id=='AF1') {
AF1.func("SetRedrawAble", "false"); //关闭重画, 否则屏幕能看到合并的切换过程
AF1.func("Build", "treelist/merge.xml \r\n fadeInStep=0"); //关闭淡入淡出效果 (这个例子的数据就在XML模版文件中)
merge();
AF1.func("SetRedrawAble", "true"); //开启重画
}
...
}
//合并
function merge()
{
//纵向合并
AF1.func("mergeSame", "col=fl"); //合并第一列
AF1.func("mergeSame", "col=status1"); //合并第二列
AF1.func("mergeSame", "col=status2"); //合并第三列
//横向逐行合并
for(row=0; row<AF1.func("GetRows", ""); row++)
AF1.func("mergeSame", "isDemergeFirst=false; row=" +row+ ";col2=status2");
}
//解除合并
function demerge()
{
AF1.func("demerge","");
}
2.方案二的关键是它的XML描述文件中的前二列定义了 VColSep 属性,设定了 VColSep 的列,其列内的纵向、横向能实现自动合并;
|