zoukankan      html  css  js  c++  java
  • GridView动态添加模版列

    由于GridView如果动态添加模版列的话,在页面做其他事件时GridView又变为初始状态,所以需要在页面On_InIt里动态绑定上

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Web.UI.WebControls;
    using System.Web.UI;
    
    namespace ZJXTWEB.Public
    {
        public class GridViewTemplate : ITemplate
        {
            public delegate void EventHandler(object sender, EventArgs e);
    
            private DataControlRowType templateType;
    
            private string columnName;
            private string controlID;
    
    
            public GridViewTemplate(DataControlRowType type, string colname)
            {
    
                templateType = type;
    
                columnName = colname;
    
            }
            public GridViewTemplate(DataControlRowType type, string controlID, string colname)
            {
                templateType = type;
                this.controlID = controlID;
                columnName = colname;
            }
    
    
            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:
                        if (this.controlID == "序号")
                        {
                            Label lb = new Label();
                            lb.ID = this.controlID;
                            lb.DataBinding += new System.EventHandler(lb_DataBinding);
                            container.Controls.Add(lb);
                        }
                        else
                            if (this.columnName == "钻前资料提交内容")
                            {
                                Button btn = new Button();
                                btn.ID = this.controlID;
                                btn.Text = "请选择钻前资料提交内容";
                                btn.CommandName = "请选择钻前资料提交内容";
                                btn.DataBinding += new System.EventHandler(btn_DataBinding);
                                container.Controls.Add(btn);
                            }
                            else
                            {
                                TextBox tb = new TextBox();
                                tb.ID = this.controlID;
                                if ((this.controlID != "地区或区块") &&(this.controlID != "油井/新井") &&(this.controlID != "水井/老井") &&(this.controlID != "建成能力万吨") &&(this.controlID != "备注"))
                                {
                                    tb.Attributes.Add("onfocus", "set_Date(this)");
                                }                            
                                tb.Width = 100;
                                tb.DataBinding += new System.EventHandler(tb_DataBinding);
                                container.Controls.Add(tb);
                            }
                        break;
                    default:
                        break;
                }
            }
    
            void btn_DataBinding(object sender, EventArgs e)
            {
                Button btn = sender as Button;
                if (btn != null)
                {
                    GridViewRow container = btn.NamingContainer as GridViewRow;
                    if (container != null)
                    {
                        object dataValue = DataBinder.Eval(container.DataItem, "序号");
                        if (dataValue != DBNull.Value)
                        {
                            btn.CommandArgument = dataValue.ToString();
                        }
                    }
                }
            }
    
            void lb_DataBinding(object sender, EventArgs e)
            {
                Label lb = sender as Label;
                if (lb != null)
                {
                    GridViewRow container = lb.NamingContainer as GridViewRow;
                    if (container != null)
                    {
                        object dataValue = DataBinder.Eval(container.DataItem, columnName);
                        if (dataValue != DBNull.Value)
                        {
                            lb.Text = dataValue.ToString();
                        }
                    }
                }
            }
    
            void tb_DataBinding(object sender, EventArgs e)
            {
                TextBox tb = sender as TextBox;
                if (tb != null)
                {
                    GridViewRow container = tb.NamingContainer as GridViewRow;
                    if (container != null)
                    {
                        object dataValue = DataBinder.Eval(container.DataItem, columnName);
                        if (dataValue != DBNull.Value)
                        {
                            tb.Text = dataValue.ToString();
                        }
                    }
                }
            }
        }
    }

    其中包括值绑定和动态的为TextBox添加JS事件

    protected override void OnInit(EventArgs e)
            {
                Init_Table();
                #region 初始化GridView
                for (int i = 0; i < Gvd_Table.Columns.Count; i++)
                {
    
                    TemplateField customField = new TemplateField();
                    customField.ShowHeader = true;
                    customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, Gvd_Table.Columns[i].ColumnName);
                    GridViewTemplate gvt = new GridViewTemplate(DataControlRowType.DataRow, Gvd_Table.Columns[i].ColumnName, Gvd_Table.Columns[i].ColumnName);
                    customField.ItemTemplate = gvt;
    
                    GridView1.Columns.Add(customField);
                }
                #endregion
                base.OnInit(e);
            }

    C#后台OnInit里去调用上面那个类,为GridView动态添加值

  • 相关阅读:
    linux 命令学习
    反编译学习一:Mac下使用dex2jar
    如何删除你的MacOS上的旧版本Java
    使用screen 遇到的多窗口
    dede简略标题调用标签
    JQ实现导航滚动到指定位置变色,并置顶
    JQ实现当前页面导航加效果(栏目页有效)
    wordpress首页调用指定分类下的文章
    作业1#python用列表实现多用户登录,并有三次机会
    python数据类型之间的转换
  • 原文地址:https://www.cnblogs.com/kaixinxingfu/p/2647809.html
Copyright © 2011-2022 走看看