DataGrid动态添加模版列

注意;获取数据时,去掉Page_load中的if(!Ispostback)

 

public partial class UserControls_ReportAll : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GetData(); } } /// /// 获取报表 /// protected void GetData() { D DataTable dt = new DataTable(); this.GXDataGrid1.AutoGenerateColumns = false; dt.Columns.Add("zb"); dt.Columns.Add("dw"); dt.Columns.Add("bm"); dt.Columns.Add("value"); for (int i = 0; i < 10; i++) { DataRow dr = dt.NewRow(); dr["zb"] = "指标" + i.ToString(); dr["dw"] = "单位" + i.ToString(); dr["bm"] = "编码" + i.ToString(); dr["value"] = "值"+i.ToString(); dt.Rows.Add(dr); } for (int rp = 0; rp < dt.Columns.Count; rp++) { TemplateColumn tc = new TemplateColumn(); if (dt.Columns[rp].ColumnName.ToString() == "col1" || dt.Columns[rp].ColumnName.ToString() == "col2" || dt.Columns[rp].ColumnName.ToString() == "col3")//指标名称、计量单位、编码 { tc.HeaderTemplate = new ColumnTemplate(ListItemType.Header, dt.Columns[rp].Caption, dt.Columns[rp].ColumnName); tc.ItemTemplate = new ColumnTemplate(ListItemType.Item, "", dt.Columns[rp].ColumnName); } else { tc.HeaderTemplate = new ColumnTemplate(ListItemType.Header, dt.Columns[rp].Caption, dt.Columns[rp].ColumnName); tc.ItemTemplate = new ColumnTemplate(ListItemType.EditItem, "", dt.Columns[rp].ColumnName); } this.GXDataGrid1.Columns.Add(tc); } GXDataGrid1.DataSource = dt; GXDataGrid1.DataBind(); } } /// /// 模版列接口 /// public class ColumnTemplate : ITemplate { private string colname, colid; private ListItemType dtype; /// /// 传递参数 /// /// /// /// public ColumnTemplate(ListItemType lbtype, string tbname, string tbid) { dtype = lbtype; colname = tbname; colid = tbid; } /// /// 创建控件 /// /// public void InstantiateIn(Control container) { switch (dtype) { case ListItemType.Header: Literal l = new Literal(); // l.DataBinding += new EventHandler(this.onDatabinding); l.Text = colname; container.Controls.Add(l); break; case ListItemType.Item: Label lb = new Label(); lb.DataBinding += new EventHandler(this.onDatabinding); container.Controls.Add(lb); break; case ListItemType.EditItem: TextBox tb = new TextBox(); tb.DataBinding += new EventHandler(this.onDatabinding); container.Controls.Add(tb); break; } } /// /// 加载控件 /// /// /// public void onDatabinding(object sender, EventArgs e) { switch (dtype) { case ListItemType.Header: Literal l = (Literal)sender; DataGridItem container1 = (DataGridItem)l.NamingContainer; l.Text = ((DataRowView)container1.DataItem)[colid].ToString(); break; case ListItemType.Item: Label lb = (Label)sender; DataGridItem container2 = (DataGridItem)lb.NamingContainer; lb.Text = ((DataRowView)container2.DataItem)[colid].ToString(); break; case ListItemType.EditItem: TextBox tb = (TextBox)sender; DataGridItem container = (DataGridItem)tb.NamingContainer; tb.Text = ((DataRowView)container.DataItem)[colid].ToString(); tb.ID = colid; break; } } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值