纵向合并gridview单元格的两种方法
比如说有这样一组数据用gridview展示出来是这样
name | num |
---|---|
a | 0 |
a | 1 |
a | 2 |
a | 3 |
a | 4 |
b | 5 |
b | 6 |
b | 7 |
b | 8 |
b | 9 |
b | 10 |
但想把相同的name放在一个单元格里,就像这样
name | num |
---|---|
a | 0 |
1 | |
2 | |
3 | |
4 | |
b | 5 |
6 | |
7 | |
8 | |
9 | |
10 |
应该怎么做呢,本人总结出两种方法,其实原理都是一样的,就是逐行判断要合并的单元格里的值是否和上一行的相同,要是相同的话就合并,不同的话就接着判断。只不过是判断的时间不同,代码也不相同。一是在gridview的RowDataBound事件中判断,就是在每一行数据绑定完成时进行上面的操作,需要一个全局变量来记录每次单元格变化的头一行。另一种是在gridview的DataBound事件中判断,就是在gridview完全绑定好以后进行上面的操作。
看下面的代码
页面:



















后台代码:










































































两种方法都在上面了,大家可以取消掉GridView1_DataBound的注释,把GridView1_RowDataBound里的代码加上注释试一试,效果是一样的。
加上这一行
if (GridView1.Rows[row].Cells[0].RowSpan == 0) GridView1.Rows[row].Cells[0].RowSpan++;
是因为cells的RowSpan属性默认值为0,要做合并的话初始值应该是1,否则就会少合并一行。
两个方法那个效率高也没有具体测试,有兴趣的朋友请试一试。