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

在孟子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 GridViewTemplateTextBox : ITemplate

{

    private DataControlRowType templateType;

    private string columnName;

    private string dataField;



    public GridViewTemplateTextBox(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:

                TextBox tb = new TextBox();

                tb.ID = container.ClientID;

                tb.DataBinding += new EventHandler(tb_DataBinding);

                container.Controls.Add(tb);

                break;

            default:

                break;

        }

    }

    private void tb_DataBinding(object sender, EventArgs e)

    {

        TextBox tb = (TextBox)sender;

        tb.Width = Unit.Percentage(100);

        GridViewRow container = (GridViewRow)tb.NamingContainer;

        tb.Text = ((DataRowView)container.DataItem)[dataField].ToString();

        tb.Width = Unit.Pixel(70);

        tb.Style.Add("TEXT-ALIGN", "right");



    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值