动态的添加控件

 2 动态的添加控件
   1)利用PlaceHolder管理控件元素,他就相当于一个容器,可以添加空间也可以删除空间
      利用它控制DropDownList,动态显示数据库里面的数据
      private void ShowData(PlaceHolder ph)
      {
        //判断是否为返回页,初始化页面
        if((ViewState["state"])!=null)&&((bool)ViewState["state"]))
        {
            ph.Control.Clear();
            DropDownList ddl=new DropDownList();
            ddl.ID="ddlid";
            ddl.AutoPostBAck=true;
            ph.Controls.Add(dll);
        }
        else
        {
          ph.Controls.Clear();//清空元素
          DropDownList ddl=new DropDownList();
          ddl.ID="ddlid";
          ddl.AutoPostBack=true;
          ph.Controls.Add(ddl);
          string strconn=ConfigurationSettings["strconn"];
          string strsql="select username from user";
          SqlConnection conn=new SqlConnection["conn"];
          try
          {
            conn.Open();
            SqlDataAdapter sda=new SalDataAdapter(strsql,conn);
            DataSet ds=new DataSet();
            sda.Fill(ds,"user");
            ddl.DataSource=ds.Tables["user"].DefaultView;
            ddl.DataTextFieled="username";
            ddl.DataBind();
          }
          catch(SqlException ex)
          {
           
          }
          finally
          {
            conn.Close();
          }
          ViewState["state"]=true;
        }
      }
    2)利用Panel实现动态DataGrid
     private void  ShowData()
     {
        Panel pl=new Panel();
        pl.Style["Top"]="30px";
        .......//设置panel的属性
        this.Controls.Add(pl);//添加到页面上
       
        DataGrid dg=new DataGrid();
        BoundColumn bc=new BoundColumn();
        bc.DataField="username";
        bc.HeaderText="姓名";
        dg.Controls.Add(bc);
       
        dg.Style["Left"]=400px;
        ......//设置dg的样式
        pl.Controls.Add(dg);
        string strconn=ConfigurationSettings["strconn"];
        string strsql="select username from user";
        SqlConnection conn=new SqlConnection["conn"];
        SqlCommand cmd=conn.CreateCommand();
        try
        {
          conn.Open();
         cmd.CommandText ="select username from user";
         SqlDataReader dr=cmd.ExecuteReader();
         dg.DataSource=dr;
         dg.DataBind();
        }
        catch
        {
        
           dr.Close(); 
          conn.Open();
        } 
     }
    3)文本框的动态增加和删除
    //类TextBoxArray
    //加载页面的时候初始化 Session["count"]
    public class TextBoxArray:System.Collections.CollectionBase
    {
      private readonly Control  hostpage;
      public TextBoxArray(Control hostpage)
      {
       this.hostpage=hostpage;
      }
      //增加文本框
      public void AddTextBox()
      {
          TextBox tb=new TextBox();
          this.List.Add(tb);//添加到集合列表
          hostpage.Controls.Add(tb);//将tb添加到窗体的集合列表
          tb.ID=this.Count.ToString();
          tb.Style["left"]=120px;
          ......//设置样式     
      }
      //创建索引
      public TextBox this[int index]
      {
         get
         {
           return (TextBox)this.List[index];
         }
      }
      public void RemoveTextBox()
      {
        if(this.count>0)
        {
          hostpage.Controls.remove(this[this.count-1]);
          this.List.RemoveAt(this.count-1);
        }
      }
    }
   
    //显示控件
    private void ShowControl(Panel pl)
    {
      textboxarray tba=new TextBoxArray();
      int count=(int)Session["count"];
      pl.Controls.Clear();
      for(int i=0 ; i<=count;i++)
      {
        tba.addNewTextBox();
      }
    }
    //调用的方法
    private void Add()
    {
      Session["count"]=(int)Session["count"]+1;
      ShowControl();
    }
    private void Del()
    {
      Session["count"]=(int)Session["count"]-1;
      ShowControl();
    }
5 动态添加的控件的事件
  private void AddButton(PlaceHolder ph)
  {
    Button bt1=new Button();
    bt1.CommandArgument="bt1";
    bt1.Command+=new CommandEventHandler(this.OnButton);
    ph.Controls.Add(bt1);
  } 
  private void OnButton(object sender,CommandEventArgs e)
  {
    switch(e.CommandArgument.ToString().ToLower())
    {
      case "bt1":
         //方法.....
         break;
    };
  }
6 动态添加JS
  private void AddJS(Button btn)
  {
     btn.Attibutes["onclick"]="javascript:alert('OK');";
  } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值