查看: 25|回复: 0

[ASP.NET 开发] ASP.NET动态添加控件一例

[复制链接]
  • TA的每日心情
    难过
    2016-3-1 09:50
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 7 天前 | 显示全部楼层 |阅读模式
    第一次单击页面中有3个Label,第二次单击有6个,第三次单击有9个,也就是每次单击要在上次的状态下再添加3个。
    我的方法是,可以通过Session来保存上次的状态,一种解法如下:
    Test.aspx关键代码:
    [url=]复制代码[/url]代码如下:

    <form id="form1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server">
    <asp:ListItem>1</asp:ListItem>
    <asp:ListItem>2</asp:ListItem>
    <asp:ListItem>3</asp:ListItem>
    </asp:DropDownList>
    <asp:DropDownList ID="DropDownList2" runat="server">
    <asp:ListItem>a</asp:ListItem>
    <asp:ListItem>b</asp:ListItem>
    <asp:ListItem>c</asp:ListItem>
    </asp:DropDownList>
    <asp:DropDownList ID="DropDownList3" runat="server">
    <asp:ListItem>A</asp:ListItem>
    <asp:ListItem>B</asp:ListItem>
    </asp:DropDownList>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    <asp:Panel ID="Panel1" runat="server">
    </asp:Panel>
    <asp:Button ID="Button2" runat="server" Text="最后一个Button" />
    </form>


    Test.aspx.cs关键代码:
    [url=]复制代码[/url]代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
    if (Session["Panel1"] != null)
    {
    int index = this.Form.Controls.IndexOf(Panel1);
    this.Form.Controls.RemoveAt(index);
    Panel1 = Session["Panel1"] as Panel;
    this.Form.Controls.AddAt(index, Panel1);
    }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    for (int i = 0; i < 3; i++)
    {
    Label label = new Label();
    DropDownList ddl = this.FindControl("DropDownList" + (i + 1).ToString()) as DropDownList;
    label.Text = ddl.SelectedValue;
    Panel1.Controls.Add(label);
    }
    Literal br = new Literal();
    br.Text = "<br/>";
    Panel1.Controls.Add(br);
    Session["Panel1"] = Panel1;
    }


    当页面回发时,先记下Panel1在控件树中的位置,并移除它,然后从Session变量获取上次添加后的Panel1,并添加到控件树中原来的位置,在这基础上继续添加新的Label控件。最后的那个Button是为了测试之用,作用有二:一是帮助查看添加的位置是否正确,二是用于检测空回发时是否能维持上次的状态。
    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2019 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表