asp.net 中服务器端控件动态添加和删除

 PlaceHolder :控件容器,本身不显示,主要用来放服务器控件的,只显示其子元素(他里面的控件)

服务器控件动态添加和删除

 <一>PlaceHolder  中动态添加服务器端控件

添加控件的一般方法:

声明一个新控件 如 label lb =new label()

设置控件属性   如:lb.text="text"

添加控件到 PlaceHolder 中 如: PlaceHolder1.controls.add(lb)

可以用 ViewState[AddedControl]=null 判断是不是第一次执行

动态添加控件,如果需要数据绑定,要先添加控件,然后再数据绑定,提交后(postback) 就不需要重新绑定了

new 一下就可以了,如:


        if ((ViewState[AddedControl] != null) & ((bool)ViewState[AddedControl]))//第二次就不要数据绑定了
        {
            ph1.Controls.Clear();//清除ph1中的控件
            DropDownList dpl = new DropDownList();
            dpl.ID = "controlid";
            dpl.AutoPostBack = true;
            ph1.Controls.Add(dpl);
        }
        else
        {
           ph1.Controls.Clear();
            DropDownList dpl = new DropDownList();
            dpl.ID = "controlid";
            dpl.AutoPostBack = true;
            ph1.Controls.Add(dpl);
            //链接数据库,设置数据源等 略
            dpl.DataBind();
            ViewState[AddedControl] = true;
        }

<二>panel中动态添加服务器端控件
在一个panel 中添加datagrid 并且绑定数据

Panel panel1 = new Panel();
        panel1.Style["top"] = "200px";//设置属性
        this.Controls.Add(panel1);
        DataGrid dg1 = new DataGrid();//定义datagrid
        BoundColumn s1 = new BoundColumn();//定义一列
        s1.DataField = "first";//绑定列的数据源
        s1.HeaderText = "mzi";//此列标题等属性设置
        dg1.Columns.Add(s1);//加入此列

        dg1.BackColor = "#00000";
        dg1.CellPadding=3;
        //设置 dg1的属性等
        panel1.Controls.Add(dg1);
        //下面数据绑定

<三> 给动态添加的控件添加事件:
如:给button 添加事件
//添加按钮1
        Button bt1 = new Button();
        bt1.CommandArgument = "bt1";//设置命令参数
        bt1.Text = "daji";
        bt1.Command += new CommandEventHandler(this.onbutton);//预定事件
        ph1.Controls.Add(bt1);
//添加按钮2,又一种方法
        Control cs = ParseControl("<asp:Button ID='Button2' runat='server' Text=Button' commandname='btn' CommandArgument = 'bt2'/>");//把字符串转化为控件
        ph1.Controls.Add(cs);
        Button bt2 = (Button)Page.FindControl("button2");
        bt2.Command += new CommandEventHandler(this.onbutton);//给bt2添加事件

    }
    public void onbutton(object sender, CommandEventArgs e)
    {
        lab1.text = "label1";
    }
这样二个按钮都对应一个函数,执行同一个事件

如果想让他们执行不同事件,

可以这样写:
  public void onbutton(object sender, CommandEventArgs e)
    {
        switch (e.CommandArgument.ToString().ToLower()) 获取命令参数,根据参数的不同,执行不同命令
        {
        case "bt1";
lab1.text = "label1";
                break;
                case "bt2";
                lab1.text = "label2";
        break;
        }
    }



<四>:在table中添加行和服务器端控件

在table中添加一行二列  table要转化服务器端控件
代码如下:

                HtmlTableRow tr1 = new HtmlTableRow();//定义行
                HtmlTableCell td1 = new HtmlTableCell();//定义列
                Label lb1 = new Label();// 定义 lb1 为Label控件
                lb1.Text = txt[m];//lb1
                td1.Controls.Add(lb1);//列中添加lbl
                HtmlTableCell td2 = new HtmlTableCell();//定义列
                TextBox txt1 = new TextBox();//textbox
                txt1.Text = namevalue[m];//text
                txt1.ID = "t" + m;//id
                td2.Controls.Add(txt1);列中添加txt1
                tr1.Cells.Add(td1);//行中添加列td1
                tr1.Cells.Add(td2);//行中添加列td1
                TABLE1.Rows.Add(tr1);//表中添加行
           
取得textbox中数据方法:

((TextBox)(TABLE1.Rows[m].FindControl("t" + m))).Text  第m行 id 为"t"+m的控件的值

添加html 控件,可以用 response.write("")

为服务器端控件添加客户端事件方法;
如:buttton.Attributes["onclick"] = "javascript:alert('shijain')";

转载于:https://www.cnblogs.com/gergro/archive/2006/04/19/378772.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值