读书人

GridView透过BoundField添加列出错

发布时间: 2012-10-15 09:45:25 作者: rapoo

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();
}
}
这样会更好些吧

读书人网 >asp.net

热点推荐