• GridView动态添加列的两篇文章


    转自:http://blog.csdn.net/liang4571231/archive/2009/03/26/4025944.aspx

    public class MyTemplate:ITemplate

    {

        private string strColumnName;

        private DataControlRowType dcrtColumnType;

     

        public MyTemplate(string strColumnName, DataControlRowType dcrtColumnType)

        {

            this.strColumnName = strColumnName;

            this.dcrtColumnType = dcrtColumnType;

        }

     

        public void InstantiateIn(Control ctlContainer)

        {

            switch (dcrtColumnType)

            {

                case DataControlRowType.Header: //列标题

                    Literal ltr = new Literal();

                    ltr.Text = strColumnName;

                    ctlContainer.Controls.Add(ltr);

                    break;

                case DataControlRowType.DataRow: //模版列内容——加载hyperlink1

                    HyperLink hl = new HyperLink();

                    hl.ID = "hyperlink1";

                    hl.NavigateUrl = "erro.aspx";

                    hl.Text = "asddddd";

                    ctlContainer.Controls.Add(hl);

                    break;

            }

        }

     

    }

            GridView gdview = new GridView();// (GridView)m_map.Page.FindControl("GridView1");

            gdview.AutoGenerateColumns = false;

            gdview.DataKeyNames = new string[] { "SDE.ST_ZD.ZD_DJH" };

     

            BoundField bf1 = new BoundField();

            BoundField bf2 = new BoundField();

            TemplateField tf = new TemplateField();

     

            bf1.HeaderText = "地籍号";

            bf1.DataField = "SDE.ST_ZD.ZD_DJH";

            bf1.ReadOnly = true;

            bf2.HeaderText = "权利人名称";

            bf2.DataField = "SDE.ST_ZD.QLR_MC";

     

            tf.HeaderText = "模板列测试";

            tf.ItemTemplate = new MyTemplate("aaaa", DataControlRowType.DataRow);

     

            CommandField cf = new CommandField();

            cf.ButtonType = ButtonType.Button;

            cf.ShowCancelButton = true;

            cf.ShowEditButton = true;

     

            gdview.Columns.Add(bf1);

            gdview.Columns.Add(bf2);

            gdview.Columns.Add(tf);

    文章二:http://blog.csdn.net/Sandy945/archive/2009/07/31/4397142.aspx

    GridView动态添加模板列 这个case 经常会遇到,网上相关资料也不少,

    但是关于如何动态为添加在模板列中的控件添加事件却没有。本文就是为解决这种情况而写。

    代码如下:

    GridViewTemplateDemo.aspx


    view plaincopy to clipboardprint?
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewTemplateDemo.aspx.cs" Inherits="GridView_GridViewTemplateDemo" %> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head id="Head1" runat="server"> 
       
         <title>GridView动态添加模板列的例子</title> 
       
     </head> 
       
     <body> 
       
         <form id="form1" runat="server"> 
       
           <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> 
       
           </asp:GridView> 
       
         </form> 
       
     </body> 
       
     </html>  
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewTemplateDemo.aspx.cs" Inherits="GridView_GridViewTemplateDemo" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
     
         <title>GridView动态添加模板列的例子</title>
     
     </head>
     
     <body>
     
         <form id="form1" runat="server">
     
           <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
     
           </asp:GridView>
     
         </form>
     
     </body>
     
     </html> 

    GridViewTemplateDemo.aspx.cs


    view plaincopy to clipboardprint?
    using System;  
    using System.Data;  
    using System.Configuration;  
    using System.Collections;  
    using System.Web;  
    using System.Web.Security;  
    using System.Web.UI;  
    using System.Web.UI.WebControls;  
    using System.Web.UI.WebControls.WebParts;  
    using System.Web.UI.HtmlControls;  
    public partial class GridView_GridViewTemplateDemo : System.Web.UI.Page  
    {  
        private DataTable getDateTable()  
        {  
            DataTable dt = new DataTable();  
            dt.Columns.Add(new DataColumn("ID", typeof(Int32)));  
            dt.Columns.Add(new DataColumn("Name", typeof(String)));  
            DataRow dr = dt.NewRow();  
            dr[0] = 1;  
            dr[1] = "01";  
            dt.Rows.Add(dr);  
            dr = dt.NewRow();  
            dr[0] = 2;  
            dr[1] = "01011";  
            dt.Rows.Add(dr);  
            dr = dt.NewRow();  
            dr[0] = 3;  
            dr[1] = "0120";  
            dt.Rows.Add(dr);  
            dr = dt.NewRow();  
            dr[0] = 4;  
            dr[1] = "01001";  
            dt.Rows.Add(dr);  
            dr = dt.NewRow();  
            dr[0] = 5;  
            dr[1] = "0105";  
            dt.Rows.Add(dr);  
            return dt;  
        }  
     
        protected override void OnInit(EventArgs e)  
        {  
            TemplateField customField = new TemplateField();  
     
            customField.ShowHeader = true;  
            customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "动态添加列");         
            GridViewTemplate gvt = new GridViewTemplate(DataControlRowType.DataRow, "lbtn", "Name");  
            gvt.eh += new GridViewTemplate.EventHandler(lbtn_Click);  
            customField.ItemTemplate = gvt;  
            GridView1.Columns.Add(customField);  
            base.OnInit(e);  
        }  
       
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!IsPostBack)  
            {  
                GridView1.DataSource = getDateTable();  
                GridView1.DataBind();  
            }  
        }  
       
        public void lbtn_Click(object sender, EventArgs e)  
        {  
            ClientScript.RegisterStartupScript(GetType(), "test", "alert('ok');", true);  
        }  
    }  
       
         public class GridViewTemplate : ITemplate  
       
         {  
             public delegate void EventHandler(object sender, EventArgs e);  
             public event EventHandler eh;  
       
             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:              
                    LinkButton lbtn = new LinkButton();  
                    lbtn.ID = this.controlID;  
                    if (eh != null)  
                    {  
                        lbtn.Click += new System.EventHandler(eh);  
                    }  
                    lbtn.DataBinding+=new System.EventHandler(lbtn_DataBinding);  
                      
                    container.Controls.Add(lbtn);  
                      
                    break;  
                default:  
                    break;  
            }  
        }  
         void lbtn_DataBinding(object sender, EventArgs e)  
         {  
             LinkButton lbtn = sender as LinkButton;  
             if (lbtn != null)  
             {  
                 GridViewRow container = lbtn.NamingContainer as GridViewRow;  
                 if (container != null)  
                 {  
                     object dataValue = DataBinder.Eval(container.DataItem, columnName);  
                     if (dataValue != DBNull.Value)  
                     {  
                         lbtn.Text = dataValue.ToString();  
                     }  
                 }  
             }  
         }  
     
       } 

  • 相关阅读:
    关于利用注射点判断数据库web是否分离
    springmvc中使用MockMvc测试controller
    springmvc中使用MockMvc测试controller
    小哥哥教你100%安装Win10专业版永久激活版(全网独一无二)
    Python爬虫入门教程 62-100 30岁了,想找点文献提高自己,还被反爬了,Python搞起,反爬第2篇
    服务器Servlet返回信息在浏览器无法显示
    nacos 系列
    如何用产品经理的思维设计移动报表
    【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
    我非要捅穿这 Neutron(四)Open vSwitch in Neutron
  • 原文地址:https://www.cnblogs.com/wangpei/p/1922852.html
Copyright © 2020-2023  润新知