zoukankan      html  css  js  c++  java
  • 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");

        }

    }

  • 相关阅读:
    Redis面试题 总结
    C++ 自由存储区是否等价于堆?(转)
    线程同步方式
    epoll的原理 (一)(转)
    C/C++ 中 volatile 关键字详解(转)
    Linux堆内存管理
    找出数组中出现次数超过一半的数
    剑指offer-复杂链表的复制
    已知二叉树前序中序遍历重建二叉树
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/lmarsy/p/564634.html
Copyright © 2011-2022 走看看