• 用代码创建DataGrid的多链接及checkbox事件响应


    本例用代码实现了创建DataGrid并响应了CheckBox事件,并实现了超链接列的多变量传送。

    创建一个前台页面
    CreateDataGrid.aspx:
    在Form中添加一个PlcaeHolder,ID为"ph",Runat="Server"
    后台页面
    CreateDatagrid.aspx.cs

         public class CreateDataGrid : System.Web.UI.Page
        
    {
            
    public String sql = "Select FirstName,LastName,HomePhone,Title FROM Employees";
            
    public DataGrid mygrid = new DataGrid();
            
    protected System.Web.UI.WebControls.PlaceHolder ph;
            
    public String SortExpression;
            
    private void Page_Load(object sender, System.EventArgs e)
            
    {
                  
    //CreateDataGridForm.Controls.Add(MakeGrid());
                
                
    this.ph.Controls.Add(MakeGrid());
            }

    //        protected override void CreateChildControls()
    //        {
                
                
    //base.CreateChildControls ();
            
    //}

            
    Web 窗体设计器生成的代码
            
    /// <summary>
            
    /// 创建一个模板列和一个列模板
            
    /// </summary>


            
    public TemplateColumn tm = new TemplateColumn();
            
    public ColumnTemplate mycol = new ColumnTemplate();

            
    //返回DataView
            public DataView CreateDataSource ()
            
    {
                
    string strSql;
                strSql 
    = "Data Source=localhost;Initial Catalog=Northwind;User Id=sa;Password=sa;";
                SqlConnection conn 
    = new SqlConnection(strSql);
                SqlDataAdapter db_sqladaptor 
    = new SqlDataAdapter(sql,conn);
                DataSet ds 
    = new DataSet();
                db_sqladaptor.Fill(ds,
    "Employees");
                DataView myView 
    = ds.Tables["Employees"].DefaultView;
                
    //myView.Sort=SortExpression;
                
    //Response.Write(sql);
                return myView;
            }


            
    /// <summary>
            
    /// 处理排序
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>

            public void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
            
    {
                SortExpression 
    = e.SortExpression.ToString();
                Session[
    "SortField"]=SortExpression.Trim();
                
    if(Session["Order"]==null) Session["Order"= "ASC";
                Session[
    "Order"= (Session["Order"].ToString()=="DESC")?"ASC":"DESC";
                
    if(Session["SortField"]==null) Session["SortField"= "FirstName";
                sql 
    += " ORDER BY "+Session["SortField"].ToString() + " " + Session["Order"].ToString();
                mygrid.DataSource 
    = CreateDataSource();
                mygrid.DataBind();
            }

            
    /// <summary>
            
    /// 创建和设置DataGrid属性,这里的属性设置为固定值,但也可以动态设置
            
    /// </summary>
            
    /// <returns></returns>


            
    public DataGrid MakeGrid()
            
    {
                mygrid.CellPadding
    =2;
                mygrid.Attributes.Add(
    "align","center");
                mygrid.CellSpacing
    =0;
                mygrid.Width
    =500;
                mygrid.BorderWidth
    =1;
                mygrid.BorderColor
    =ColorTranslator.FromHtml("Black");
                mygrid.AutoGenerateColumns
    =false;
                mygrid.ForeColor
    =ColorTranslator.FromHtml("Black");
                mygrid.Font.Size
    =9;
                mygrid.Font.Name
    ="宋体";
                mygrid.AllowSorting
    =true;

                
    ///sort命令的事件处理器

                
    //mygrid.SortCommand += new DataGridSortCommandEventHandler(Sort_Grid);
                mygrid.ItemDataBound +=new DataGridItemEventHandler(mygrid_ItemDataBound);

                
    ///设置headerstyle
                mygrid.HeaderStyle.BackColor=ColorTranslator.FromHtml("Gold");
                mygrid.HeaderStyle.ForeColor
    =ColorTranslator.FromHtml("Black");
                mygrid.HeaderStyle.Font.Name
    ="宋体";
                mygrid.HeaderStyle.Font.Size
    =9;
                mygrid.HeaderStyle.Font.Bold
    =true;
                mygrid.HeaderStyle.HorizontalAlign
    =HorizontalAlign.Center;

                
    ///设置alternating style
                mygrid.AlternatingItemStyle.BackColor=ColorTranslator.FromHtml("Silver");
                mygrid.AlternatingItemStyle.ForeColor
    =ColorTranslator.FromHtml("Black");

                
    ///设置itemstyle
                mygrid.ItemStyle.HorizontalAlign=HorizontalAlign.Left;

                
    ///创建绑定列和属性

                HyperLinkColumn FirstName 
    = new HyperLinkColumn();
                BoundColumn LastName 
    = new BoundColumn();
                BoundColumn HomePhone 
    = new BoundColumn();
                BoundColumn Title 
    = new BoundColumn();

    //            FirstName.HeaderText="名字";
    //            FirstName.DataField="FirstName";
    //            FirstName.SortExpression="FirstName";

                FirstName.HeaderText
    ="名字";
                
                FirstName.DataTextField 
    ="FirstName";
                FirstName.SortExpression
    ="FirstName";
                FirstName.NavigateUrl 
    = "http://localhost/test.aspx";

                LastName.HeaderText
    ="";
                LastName.DataField
    ="LastName";
                LastName.SortExpression
    ="LastName";

                HomePhone.HeaderText
    ="电话";
                HomePhone.DataField
    ="HomePhone";
                HomePhone.SortExpression
    ="HomePhone";

                Title.HeaderText
    ="职务";
                Title.DataField
    ="Title";
                Title.SortExpression
    ="Title";

                mygrid.Columns.AddAt(
    0, FirstName);
                mygrid.Columns.AddAt(
    1, LastName);
                mygrid.Columns.AddAt(
    2, HomePhone);
                mygrid.Columns.AddAt(
    3, Title);

                
    ///设置模板列属性和ItemStyle模板
                tm.HeaderText="**删除信息**";
                tm.HeaderStyle.HorizontalAlign
    =HorizontalAlign.Center;
                tm.ItemStyle.BackColor 
    = ColorTranslator.FromHtml("#FFF778");
                tm.ItemStyle.HorizontalAlign
    =HorizontalAlign.Center;
                

                TemplateColumn aa
    =new TemplateColumn();
                ColumnTemplate1 tt 
    = new ColumnTemplate1();
                aa.ItemTemplate 
    = tt;

                
                
    ///创建列模板。
                
    ///列模板从ITemplate继承

                tm.ItemTemplate = mycol;
                mygrid.Columns.AddAt(
    4, tm);
                mygrid.Columns.AddAt(
    5,aa);  

                
    ///绑定和返回
                mygrid.DataSource = CreateDataSource();
                mygrid.DataBind();
                
    return mygrid;
            }


            
    private void mygrid_ItemDataBound(object sender, DataGridItemEventArgs e)
            
    {
                
    if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                
    {
                    HyperLink link  
    = (HyperLink)e.Item.Cells[0].Controls[0];  
                    
    string url = link.NavigateUrl;
        
    //实现多参数链接
                    url += "?id=" + e.Item.Cells[1].Text + "&id2=" + e.Item.Cells[2].Text;
                    link.NavigateUrl 
    = url;
                }

            }

        }

     
     



    再添加关键的几段

     ///  ColumnTemplate 从ITemplate继承。
        
    ///  "InstantiateIn"定义子控件的属于谁


        
    public class ColumnTemplate : ITemplate
        
    {

            
    public void InstantiateIn(Control container)
            
    {
                Label myLabel 
    = new Label();
                myLabel.Text
    ="点击删除";
                CheckBox mycheckbox 
    = new CheckBox();
                container.Controls.Add(myLabel);
                container.Controls.Add(mycheckbox);
            }


        }
     


    添加CheckBox事件:

    public class ColumnTemplate1 : ITemplate
        
    {

            
    public void InstantiateIn(Control container)
            
    {
                Label myLabel 
    = new Label();
                myLabel.Text
    ="test";
                CheckBox lnk 
    = new CheckBox();
                lnk.AutoPostBack 
    = true;
                lnk.CheckedChanged 
    +=new EventHandler(lnk_CheckedChanged);
                container.Controls.Add(myLabel);
                container.Controls.Add(lnk);
            }



            
    private void lnk_CheckedChanged(object sender, EventArgs e)
            
    {
                CheckBox lnk 
    = (CheckBox)sender;
                DataGrid dg 
    = (DataGrid)lnk.NamingContainer.NamingContainer;
                
    if(dg == nullreturn;
                 
    //实现CheckBox事件响应
                DataGridItem di =(DataGridItem)lnk.NamingContainer;
                HyperLink lnkID= (HyperLink)di.Cells[0].Controls[0];
                string s2 =  lnkID.Text.Trim()+lnk.ID+"被选中了!"
    ;
            }

        }

    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    python基础--文件操作实现全文或单行替换
    python基础7--集合
    python读写json文件
    python基础6--目录结构
    python基础5--模块
    Ubuntu的一些常用快捷键
    ubuntu dpkg 命令详解
    linux(Ubuntu)安装QQ2013
    fcitx-sogoupinyin下载地址和安装
    Ubuntu下装QQ2014
  • 原文地址:https://www.cnblogs.com/downmoon/p/1019697.html
Copyright © 2020-2023  润新知