GridView通过BoundField添加列出错
DataTable dt = new DataTable();
for (int i = 1; i <= 6; i++) {
BoundField bf = new BoundField();
bf.DataField = "ID" + i;
bf.HeaderText = "ID";
bf.HtmlEncode = true;
DataColumn dc = new DataColumn();
this.GridView1.Columns.Add(bf); }
for (int i = 0; i < 100; i++) {
dt.Rows.Add(i, "He" + i.ToString("00"), "He", "Jian", "Bo", new DateTime(2008, 8, 8)); }
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
前台代码只有
<asp:GridView ID="GridView1" runat="server" Width="100%" Height="55px"> </asp:GridView>
错误:BoundField列没有添加进去,导致 dt.Rows.Add出错。而且单独添加BoundField表格一片空白,显然没有添加进去
[解决办法]
你没有创建列啊
- C# code
dt.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32))); dt.Columns.Add(new System.Data.DataColumn("ID1", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID2", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID3", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID4", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID5", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID6", typeof(System.String)));
[解决办法]
完整的例子
- HTML code
<%@ Page Language="C#" EnableViewState="true" AutoEventWireup="true" Debug="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32))); dt.Columns.Add(new System.Data.DataColumn("ID1", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID2", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID3", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID4", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID5", typeof(System.String))); dt.Columns.Add(new System.Data.DataColumn("ID6", typeof(System.DateTime))); for (int i = 1; i <= 6; i++) { BoundField bf = new BoundField(); bf.DataField = "ID" + i; bf.HeaderText = "ID" + i; bf.HtmlEncode = true; System.Data.DataColumn dc = new System.Data.DataColumn(); this.GridView1.Columns.Add(bf); } for (int i = 0; i < 100; i++) { dt.Rows.Add(i, "He" + i.ToString("00"), "He", "Jian", "Bo", new DateTime(2008, 8, 8)); } GridView1.AutoGenerateColumns = false; this.GridView1.DataSource = dt; this.GridView1.DataBind(); } }</script><html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1" runat="server"> <title>dddd</title></head><body> <form id="form1" runat="server"> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </form></body></html>
[解决办法]
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
System.Data.DataTable dt = new System.Data.DataTable();
for (int i = 1; i <= 6; i++)
{
BoundField bf = new BoundField();
bf.DataField = "ID" + i;
bf.HeaderText = "ID" + i;
bf.HtmlEncode = true;
//System.Data.DataColumn dc = new System.Data.DataColumn();
dt.Columns.Add(new System.Data.DataColumn("ID"+i, typeof(System.String)));
this.GridView1.Columns.Add(bf);
}
for (int i = 0; i < 100; i++)
{
dt.Rows.Add(i, "He" + i.ToString("00"), "He", "Jian", "Bo", new DateTime(2008, 8, 8));
}
GridView1.AutoGenerateColumns = false;
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
这样会更好些吧