构造多重表头功能适用于所有页面, 不从母版继承的页面也可以直接使用.
使用方法:
在gv1 的RowDataBound 事件中:
public void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType== DataControlRowType.Header)
MLT.Share.CreateMultipleHeader(gv1, e, new MLT.Share.MultipleHeaderConfig(22, 28, "代扣缴款项").CreateList());
}
上面的示例代码中: 配置类的三个参数分别是gridview 中的起始列号, 终止列号和显示文本, 如图:
其中,"办卡"是第22列, “所得税” 是第28列, 文本”代扣缴款项” 显示在它们上方.
即, 在设计时忽略多重表头, 仍然按单行设计整个gridview, 直到绑定事件中, 才把需要格式化为多重的信息提供给配置函数.
如果有多个多重表头区域:
if(e.Row.RowType== DataControlRowType.Header)
{
MLT.Share.MultipleHeaderConfig conf = new MLT.Share.MultipleHeaderConfig(22, 28, "代扣缴款项");
var conf2 = new MLT.Share.MultipleHeaderConfig(29, 30, "表头2");
var conf3 = new MLT.Share.MultipleHeaderConfig(31, 32, "表头3");
MLT.Share.CreateMultipleHeader(gv1, e, conf.CreateList(conf2,conf3));
}
只要给每个区域定义一个配置对象, 最后都放到CreateList 函数中即可. CreateList 函数可以接受任意多个参数.
需要注意的是, conf.CreateList(conf2,conf3) 时, 函数会自动把当前对象加入到列表中, 所以参数列表中不要再出现当前对象.
即, conf2. CreateList(conf,conf3) 也是一样的.
关于导出到Excel :
1) 从母版继承的页面
在InitMaster 函数中, 把CreateList的结果赋给Master.MultipleHeader 属性即可.
例如:
Master.MultipleHeader = new MLT.Share.MultipleHeaderConfig(22, 28, "代扣缴款项").CreateList();
如果有多个多重区域, 参照绑定事件中的写法即可.
注意: 以前那种拼字符串的写法是不能成功导出到Excel的. 除非自定义导出事件.
2) 不从母版继承的页面.
a) 自己写TableCellCollection, 调用ToExcel 里面的方法. Collection的创建方法就是系统中目前处理多行表头的方法,
逐格设置, 最后一格拼字符串.
b) 采用跟母版一致的做法. 参考QueryPage.cs 中函数btnExport_Click的实现.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/716080/viewspace-555658/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/716080/viewspace-555658/