日期:2014-05-18  浏览次数:20481 次

GridView绑定 动态生成的Datatable 如何在显示出DataColumn的Caption 100分求思路 顶者有分 必结贴
动态生成列 
C# code

DataTable dt = new DataTable();

            foreach (var i in subitem)  //动态构造表结构                {
                DataColumn col = new DataColumn();
                col.DataType = typeof(string);
                col.Caption = i.SubItemName;      //显示的列名称
                col.ColumnName = i.SubItemID.ToString();  // 列主键
                dt.Columns.Add(col);    
                }


              DataRow dr = dt.NewRow();  //添加一行数据

                            foreach (var p in List<ent>)
                                {
                                dr[p.SubItemID.ToString()] = p.Value; //根据列主键 赋值
                                }




以上是大致的构造Datatable 过程

现在问题是 绑定到GridView后 那么标题 就只会显示ColumnName 而不会显示出DataColumn 里的 Caption 有什么办法能绑定呢


------解决方案--------------------
http://forums.asp.net/t/1460548.aspx/1
------解决方案--------------------
C# code
        DataTable dt = new DataTable();
        //创建表头
        dt.Columns.Add("aaa", typeof(string));
        dt.Columns.Add("bbb", typeof(string));

        //添加数据
        DataRow dr;
        dr = dt.NewRow();
        dr[0] = "123";
        dr[1] = "456";

        dt.Rows.Add(dr);

        GridView1.DataSource = dt;
        GridView1.DataBind();

------解决方案--------------------
<asp:GridView ID="gridview" runat="server" AutoGenerateColumns="false" >
<Columns>
<asp:BoundField DataField="caption" headerText="Caption"/>
</Columns>
</asp:GridView>
------解决方案--------------------
没看清问题所在!
GridView绑定table列名似乎只能是ColumnName,
要显示Cation好像不能使用GridView,直接循环table:
for (int i = 0; i < dt.Columns.Count; i++)
{
Response.Write(dt.Columns[i].Caption.ToString() + " ");
}
------解决方案--------------------
你单独设置 GridView 的 HeaderRow 为 Caption 

或者在RowDataBind中设置