






















比如说有这样一组数据用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,否则就会少合并一行。
两个方法那个效率高也没有具体测试,有兴趣的朋友请试一试。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。