GridView动态生成列名
动态生成列名
1 if (dt.Rows.Count > 0) 2 { 3 for (int n = 0; n < dt.Columns.Count; n++) 4 { 5 //申明一个绑定字段对象 6 BoundField bf = new BoundField(); 7 bf.DataField = dt.Columns[n].ColumnName.ToString(); 8 bf.HeaderText = dt.Columns[n].Caption.ToString(); 9 grdResult.Columns.Add(bf); 10 } 11 grdResult.DataSource = dt; 12 grdResult.DataBind(); 13 }
联想到了:
1 <asp:BoundField DataField="BillID" HeaderText="单号"/>
GridView里的Columns方法:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1 // 2 // 摘要: 3 // 获取表示 System.Web.UI.WebControls.GridView 控件中列字段的 System.Web.UI.WebControls.DataControlField 4 // 对象的集合。 5 // 6 // 返回结果: 7 // 一个 System.Web.UI.WebControls.DataControlFieldCollection,包含 System.Web.UI.WebControls.GridView 8 // 控件中所有列字段。 9 [DefaultValue("")] 10 [Editor("System.Web.UI.Design.WebControls.DataControlFieldTypeEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))] 11 [MergableProperty(false)] 12 [PersistenceMode(PersistenceMode.InnerProperty)] 13 public virtual DataControlFieldCollection Columns { get; }
查看元数据 DataControlFieldCollection 就会发现,这个类继承自 StateManagedCollection,而StateManagedCollection又继承自IList.
注意点
- <GridView>标签里面需要添加<Columns>标签.
- GridView内的属性AutoGenerateColumns="false",如果等于true的话,也可以实现自动生成列名,但是如果是回传的时候,则不会再次刷新列,只有页面初次加载时才会动态的生成列.
- GridView标签内添加的属性,都能在.aspx.cs页面添加.编译的时候,GridView会生成一个对象,所有的属性会变成对象的属性,特别是数据行,会生成一个GridViewRow的对象集合,然后赋值给GridView的对象的Rows属性.

更多精彩