纵向合并gridview单元格的两种方法
2007-11-14 13:43
309 查看
比如说有这样一组数据用gridview展示出来是这样
但想把相同的name放在一个单元格里,就像这样
应该怎么做呢,本人总结出两种方法,其实原理都是一样的,就是逐行判断要合并的单元格里的值是否和上一行的相同,要是相同的话就合并,不同的话就接着判断。只不过是判断的时间不同,代码也不相同。一是在gridview的RowDataBound事件中判断,就是在每一行数据绑定完成时进行上面的操作,需要一个全局变量来记录每次单元格变化的头一行。另一种是在gridview的DataBound事件中判断,就是在gridview完全绑定好以后进行上面的操作。
看下面的代码
页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" OnDataBound="GridView1_DataBound">
</asp:GridView>
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
public partial class Default3 : System.Web.UI.Page
两种方法都在上面了,大家可以取消掉GridView1_DataBound的注释,把GridView1_RowDataBound里的代码加上注释试一试,效果是一样的。
加上这一行
if (GridView1.Rows[row].Cells[0].RowSpan == 0) GridView1.Rows[row].Cells[0].RowSpan++;
是因为cells的RowSpan属性默认值为0,要做合并的话初始值应该是1,否则就会少合并一行。
两个方法那个效率高也没有具体测试,有兴趣的朋友请试一试。
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 | num |
---|---|
a | 0 |
1 | |
2 | |
3 | |
4 | |
b | 5 |
6 | |
7 | |
8 | |
9 | |
10 |
看下面的代码
页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" OnDataBound="GridView1_DataBound">
</asp:GridView>
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
public partial class Default3 : System.Web.UI.Page
两种方法都在上面了,大家可以取消掉GridView1_DataBound的注释,把GridView1_RowDataBound里的代码加上注释试一试,效果是一样的。
加上这一行
if (GridView1.Rows[row].Cells[0].RowSpan == 0) GridView1.Rows[row].Cells[0].RowSpan++;
是因为cells的RowSpan属性默认值为0,要做合并的话初始值应该是1,否则就会少合并一行。
两个方法那个效率高也没有具体测试,有兴趣的朋友请试一试。
相关文章推荐
- 纵向合并gridview单元格的两种方法
- 纵向合并gridview单元格的两种方法
- Android中用GridView实现九宫格的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- gridview实现服务器端和客户端全选的两种方法分享
- asp.net2.0 GridView 实现服务器端和客户端全选的两种方法
- GridView实现分页的两种方法
- 两种方法创建WPF目录树TreeView和GridView数据绑定
- 为Excel工作表单元格命名的两种方法
- GridView的技巧 绑定行事件,取得单元格值,或取得单元格控件方法,鼠标经过样式
- VS2005合并 GridView 单元格的或表头的方法
- ASP.NET 当GridView中没有数据的时候,显示标题栏 并且给出一行数据提示 (两种方法)
- GridView判断使文字显示不同的颜色的两种方法:1前右判断;2.后台判断
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法
- ASP.NET 当GridView中没有数据的时候,显示标题栏 并且给出一行数据提示 (两种方法)
- ASP.NET中GridView控件删除数据的两种方法
- (方法二)Excel是最常用的办公软件。每个单元格都有唯一的地址表示 比如:第4列表示为:“D”,第255列表示为“IU”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做R
- GridView 实现服务器端和客户端全选的两种方法
- GridView 实现服务器端和客户端全选的两种方法