怎样在一个网页中实现按下一个按钮,在下面添加一个控件 急,在线等

时间:2021-03-02 17:00:54
怎样在实现按下一个按钮,在下面添加一个控件

15 个解决方案

#1


自己顶

#2


服务器端的:
用PlaceHolder作为容器控件。
Button1_Click(object sender,EvtArgs)
{
   PlaceHolder1.Controls.Add(new Button());
}

还可以用js在客户端实现。

#3


js还没学。不会。我想这个控件是保存在网页上的。可以的吗?

#4


我是想做一个调查的网页。在第一个网页有个label显示题目radiobuttonlist是选项。button1跳转,统计。button2跳到另一个页面diaocha.aspx。填写调查的题目和选项。diaocha.aspx里的内容怎么再用一个radiobuttonlist显示出来呢

#5


用jQuery吧。
$("#button1").click(function(){
     $("@display").html("<a href='dsds'>点击</a>");
});

#6


又学到一招了……

#7


不十分了解asp.net原理,建议你不要轻易写动态加载控件的代码。应该使用现有的数据绑定代码,例如repeater、listview等来动态加载控件。


我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    List<string> 插入的人物唯一编号
    {
        get
        {
            var x = ViewState["num"];
            if (x == null)
            {
                x = new List<string>();
                ViewState["num"] = x;
            }
            return (List<string>)x;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        CreatePlaceHolder();
    }

    void InsertAscx(string 唯一编号, bool isLoadCompleted)
    {
        var container = new PlaceHolder { ID = "pl_" + 唯一编号 };
        this.PlaceHolder1.Controls.Add(container);
        var c = this.LoadControl("XXX.ascx");
        c.ID = "MyCtrl_" + 唯一编号;
        container.Controls.Add(c);
        var b = new Button { Text = "删除", ID = "Del_" + 唯一编号 };
        container.Controls.Add(b);
        container.Controls.Add(new LiteralControl { Text = "<hr />" });
        if (isLoadCompleted)
        {
            ((IXXX)c).Name = 唯一编号;
        }
        else
        {
            b.Click += (sender, e) =>
            {
                var cc = this.PlaceHolder1.FindControl("pl_" + 唯一编号);
                this.PlaceHolder1.Controls.Remove(cc);
                插入的人物唯一编号.Remove(唯一编号);
            };
        }
    }

    void CreatePlaceHolder()
    {
        this.PlaceHolder1.Controls.Clear();
        for (var i = 0; i < 插入的人物唯一编号.Count; i++)
            InsertAscx(插入的人物唯一编号[i], false);
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        var 编号 = "sp" + (流水号++).ToString();
        插入的人物唯一编号.Add(编号);
        InsertAscx(编号, true);
    }

    private int 流水号
    {
        get
        {
            object x = ViewState["流水号"];
            return x == null ? 1 : (int)x;
        }
        set
        {
            ViewState["流水号"] = value;
        }
    }
    
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button ID="Button1" runat="server" Text="插入" OnClick="Button1_Click" />&nbsp;
    <asp:Button ID="Button2" runat="server" Text="随便测试" UseSubmitBehavior="false" />
    <hr />
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </form>
</body>
</html>
首先在你的网站创建这样内容的一个aspx文件,然后再创建一个名字叫做 XXX.ascx (名字必须这样)的文件其内容是
<%@ Control Language="C#" ClassName="XXX" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Implements Interface="IXXX" %>
<script runat="server">
    public string Name
    {
        get
        {
            this.EnsureChildControls();
            return this.pName.Text;
        }
        set
        {
            this.EnsureChildControls();
            this.pName.Text = value;
        }
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch (this.DropDownList1.SelectedValue)
        {
            case "标记:红":
                this.div.ForeColor = Color.Red;
                break;
            case "标记:蓝":
                this.div.ForeColor = Color.Blue;
                break;
            case "标记:黑":
                this.div.ForeColor = Color.Black;
                break;
        }
    }
</script>
<asp:Label runat="server" ID="pName"></asp:Label>
先生(女士):
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
    <asp:ListItem>标记:黑</asp:ListItem>
    <asp:ListItem>标记:红</asp:ListItem>
    <asp:ListItem>标记:蓝</asp:ListItem>
</asp:DropDownList>
<br />
<asp:Panel runat="server" ID="div">
    你的合同付款期限已到,未付款<asp:TextBox runat="server" ID="pMoney" Width="60px" />元人民币,请及时付款。
    <br />
    <br />
    XXX年XXX月XXX日
</asp:Panel>
<asp:HiddenField ID="HiddenField1" runat="server" />
然后就可以进行测试了。这是一个最简单的动态加载业务UI子模块的demo。说它简单,因为它对XXX.ascx并没有实现什么业务内容,所以很不实用,顶多可以让你感受一下动态加载一个稍微实用一点的UI模块是怎么回事。

#8


我在XXX.ascx中使用“颜色选择”来说明动态加载的控件内部的状态应该如何维系的问题。

#9


引用 7 楼 sp1234 的回复:
不十分了解asp.net原理,建议你不要轻易写动态加载控件的代码。应该使用现有的数据绑定代码,例如repeater、listview等来动态加载控件。


我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:

HTML code
<%@ Page Language="C#" %>

……

up

#10


动态添加控件呀

#11


关注,这个问题太常见了,我也不会。
以前见老师实现过类似的功能,比如上传图片控件,自己可以任意添加多个。
没好意思问要代码,因为那是老师在外接的活的代码。

#12


学习中!

#13


高手指点,开始有A页面,A页面有textbox1,点按钮1,关闭A,打开B页面,B内有textb2、按钮2,点按钮2,关闭页面B,将textbox1、textbox2内的数据生成一个xml文件,
求代码!!!!急急急

#14


学习下

#15


该回复于2011-02-28 16:05:06被版主删除

#1


自己顶

#2


服务器端的:
用PlaceHolder作为容器控件。
Button1_Click(object sender,EvtArgs)
{
   PlaceHolder1.Controls.Add(new Button());
}

还可以用js在客户端实现。

#3


js还没学。不会。我想这个控件是保存在网页上的。可以的吗?

#4


我是想做一个调查的网页。在第一个网页有个label显示题目radiobuttonlist是选项。button1跳转,统计。button2跳到另一个页面diaocha.aspx。填写调查的题目和选项。diaocha.aspx里的内容怎么再用一个radiobuttonlist显示出来呢

#5


用jQuery吧。
$("#button1").click(function(){
     $("@display").html("<a href='dsds'>点击</a>");
});

#6


又学到一招了……

#7


不十分了解asp.net原理,建议你不要轻易写动态加载控件的代码。应该使用现有的数据绑定代码,例如repeater、listview等来动态加载控件。


我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    List<string> 插入的人物唯一编号
    {
        get
        {
            var x = ViewState["num"];
            if (x == null)
            {
                x = new List<string>();
                ViewState["num"] = x;
            }
            return (List<string>)x;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        CreatePlaceHolder();
    }

    void InsertAscx(string 唯一编号, bool isLoadCompleted)
    {
        var container = new PlaceHolder { ID = "pl_" + 唯一编号 };
        this.PlaceHolder1.Controls.Add(container);
        var c = this.LoadControl("XXX.ascx");
        c.ID = "MyCtrl_" + 唯一编号;
        container.Controls.Add(c);
        var b = new Button { Text = "删除", ID = "Del_" + 唯一编号 };
        container.Controls.Add(b);
        container.Controls.Add(new LiteralControl { Text = "<hr />" });
        if (isLoadCompleted)
        {
            ((IXXX)c).Name = 唯一编号;
        }
        else
        {
            b.Click += (sender, e) =>
            {
                var cc = this.PlaceHolder1.FindControl("pl_" + 唯一编号);
                this.PlaceHolder1.Controls.Remove(cc);
                插入的人物唯一编号.Remove(唯一编号);
            };
        }
    }

    void CreatePlaceHolder()
    {
        this.PlaceHolder1.Controls.Clear();
        for (var i = 0; i < 插入的人物唯一编号.Count; i++)
            InsertAscx(插入的人物唯一编号[i], false);
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        var 编号 = "sp" + (流水号++).ToString();
        插入的人物唯一编号.Add(编号);
        InsertAscx(编号, true);
    }

    private int 流水号
    {
        get
        {
            object x = ViewState["流水号"];
            return x == null ? 1 : (int)x;
        }
        set
        {
            ViewState["流水号"] = value;
        }
    }
    
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button ID="Button1" runat="server" Text="插入" OnClick="Button1_Click" />&nbsp;
    <asp:Button ID="Button2" runat="server" Text="随便测试" UseSubmitBehavior="false" />
    <hr />
    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </form>
</body>
</html>
首先在你的网站创建这样内容的一个aspx文件,然后再创建一个名字叫做 XXX.ascx (名字必须这样)的文件其内容是
<%@ Control Language="C#" ClassName="XXX" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Implements Interface="IXXX" %>
<script runat="server">
    public string Name
    {
        get
        {
            this.EnsureChildControls();
            return this.pName.Text;
        }
        set
        {
            this.EnsureChildControls();
            this.pName.Text = value;
        }
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch (this.DropDownList1.SelectedValue)
        {
            case "标记:红":
                this.div.ForeColor = Color.Red;
                break;
            case "标记:蓝":
                this.div.ForeColor = Color.Blue;
                break;
            case "标记:黑":
                this.div.ForeColor = Color.Black;
                break;
        }
    }
</script>
<asp:Label runat="server" ID="pName"></asp:Label>
先生(女士):
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
    <asp:ListItem>标记:黑</asp:ListItem>
    <asp:ListItem>标记:红</asp:ListItem>
    <asp:ListItem>标记:蓝</asp:ListItem>
</asp:DropDownList>
<br />
<asp:Panel runat="server" ID="div">
    你的合同付款期限已到,未付款<asp:TextBox runat="server" ID="pMoney" Width="60px" />元人民币,请及时付款。
    <br />
    <br />
    XXX年XXX月XXX日
</asp:Panel>
<asp:HiddenField ID="HiddenField1" runat="server" />
然后就可以进行测试了。这是一个最简单的动态加载业务UI子模块的demo。说它简单,因为它对XXX.ascx并没有实现什么业务内容,所以很不实用,顶多可以让你感受一下动态加载一个稍微实用一点的UI模块是怎么回事。

#8


我在XXX.ascx中使用“颜色选择”来说明动态加载的控件内部的状态应该如何维系的问题。

#9


引用 7 楼 sp1234 的回复:
不十分了解asp.net原理,建议你不要轻易写动态加载控件的代码。应该使用现有的数据绑定代码,例如repeater、listview等来动态加载控件。


我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:

HTML code
<%@ Page Language="C#" %>

……

up

#10


动态添加控件呀

#11


关注,这个问题太常见了,我也不会。
以前见老师实现过类似的功能,比如上传图片控件,自己可以任意添加多个。
没好意思问要代码,因为那是老师在外接的活的代码。

#12


学习中!

#13


高手指点,开始有A页面,A页面有textbox1,点按钮1,关闭A,打开B页面,B内有textb2、按钮2,点按钮2,关闭页面B,将textbox1、textbox2内的数据生成一个xml文件,
求代码!!!!急急急

#14


学习下

#15


该回复于2011-02-28 16:05:06被版主删除