动态向GridView插入空行

GridView是一个常用的控件,美中不足是它跟DataGrid一样,灵活性差了一些.
有时候要在绑定数据时每隔若干行插入一个空行,这样会好看些,不会让人感觉很挤.
当然也可以插入一些广告
今天研究了一下,发现还是可以实现的,只不过方法有点那个啥了,先看代码吧:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
 int index = 0;
//每一行创建时发生的事件
 void gv_RowCreated(object sender, GridViewRowEventArgs e){
 if (index > 0 && index % 5 == 1 && e.Row.RowIndex>0)
 {
 gv.Rows[e.Row.RowIndex - 1].Cells[e.Row.Cells.Count - 1].Text += "</td></tr><tr><td colspan=10>&nbsp;";
 }
 index++;
 }
 void Page_load(object sender, EventArgs e)
 {
 DataTable dt = new DataTable();
 dt.Columns.Add("id");
 dt.Columns.Add("name");
 for (int i = 1; i <= 30; i++)
 {
 DataRow row = dt.NewRow();
 row["id"] = i;
 row["name"] = "name" + i;
 dt.Rows.Add(row);
 }
 gv.DataSource = dt;
//绑定数据
 gv.DataBind();
 }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
 <title>给GridView添加一个空行</title>
</head>
<body>
 <form id="form1" runat="server">
 <div>
 <asp:GridView ID="gv" runat="server" OnRowCreated="gv_RowCreated" AutoGenerateColumns="false">
 <Columns>
 <asp:BoundField DataField="id" HeaderText="id" />
 <asp:BoundField DataField="name" HeaderText="name" />
 </Columns>
 </asp:GridView>
 </div>
 </form>
</body>
</html>
关键的一句是:
gv.Rows[e.Row.RowIndex - 1].Cells[e.Row.Cells.Count - 1].Text += "</td></tr><tr><td colspan=10>&nbsp;";

当然上面代码完全可以写得更像样一些,比如:
GridViewRow tr = new GridViewRow(0, 0, DataControlRowType.EmptyDataRow, DataControlRowState.Normal);
TableCell cel = new TableCell();
cel.ColumnSpan = 10;
cel.Text = "&nbsp;";
tr.Cells.Add(cel);
gv.Rows[e.Row.RowIndex - 1].Parent.Controls.Add(tr);

另外关键的一句是:
<asp:GridView ID="gv" runat="server" OnRowCreated="gv_RowCreated" AutoGenerateColumns="false">
请注意OnRowCreated="gv_RowCreated"
效果如下:
id name
1 name1
2 name2
3 name3
4 name4
5 name5
 
6 name6
7 name7
8 name8
9 name9
10 name10
 
11 name11
12 name12
13 name13
14 name14
15 name15
 
16 name16
17 name17
18 name18
19 name19
20 name20
 
21 name21
22 name22
23 name23
24 name24
25 name25
 
26 name26
27 name27
28 name28
29 name29
30 name30
posted @ 2008-06-12 16:37  冰封的心  阅读(293)  评论(0)    收藏  举报