ASP.NET2.0中给GridView动态添加模板列并自动绑定数据

http://www.cnblogs.com/lmarsy/archive/2006/11/18/564634.html

 

在孟子E章上看了一下,但是他的数据是不能自动绑定上去的,需要再RowDataBind事件里面处理。
改进了一下。可以指定datafield,让其自动绑定上去。
对于TextBox在InstantiateIn中增加事件:
tb.DataBinding += new EventHandler(tb_DataBinding);
然后在事件函数tb_DataBinding里面:
tb.Text = ((DataRowView)container.DataItem)[dataField].ToString();
这样GV就可以自动绑定到他的DataSource对应的DataTable中列dataField对应的数据了。

 

 

 public class GridViewTemplate : ITemplate
    {
        private DataControlRowType templateType;
        private string columnName;
        private string dataField;

        public GridViewTemplate(DataControlRowType type, string colname, string datafield)
        {
            templateType = type;
            columnName = colname;
            dataField = datafield;
        }

        public void InstantiateIn(System.Web.UI.Control container)
        {
            switch (templateType)
            {
                case DataControlRowType.Header:
                    Literal lc = new Literal();
                    lc.Text = columnName;
                    container.Controls.Add(lc);
                    break;
                case DataControlRowType.DataRow:
                    Label lbl = new Label();
                    lbl.ID = container.ClientID;
                    lbl.DataBinding += new EventHandler(lbl_DataBinding);
                    container.Controls.Add(lbl);
                    break;
                default:
                    break;
            }
        }
        private void lbl_DataBinding(object sender, EventArgs e)
        {
            Label lbl = (Label)sender;
            lbl.Width = Unit.Percentage(100);
            GridViewRow container = (GridViewRow)lbl.NamingContainer;
            lbl.Text = ((DataRowView)container.DataItem)[dataField].ToString();
            lbl.Width = Unit.Pixel(70);
            lbl.Style.Add("TEXT-ALIGN", "right");
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值