15 个解决方案
#1
自己顶
#2
服务器端的:
用PlaceHolder作为容器控件。
还可以用js在客户端实现。
用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>");
});
$("#button1").click(function(){
$("@display").html("<a href='dsds'>点击</a>");
});
#6
又学到一招了……
#7
不十分了解asp.net原理,建议你不要轻易写动态加载控件的代码。应该使用现有的数据绑定代码,例如repeater、listview等来动态加载控件。
我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:
我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:
<%@ Page Language="C#" %>首先在你的网站创建这样内容的一个aspx文件,然后再创建一个名字叫做 XXX.ascx (名字必须这样)的文件其内容是
<%@ 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" />
<asp:Button ID="Button2" runat="server" Text="随便测试" UseSubmitBehavior="false" />
<hr />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</form>
</body>
</html>
<%@ Control Language="C#" ClassName="XXX" %>然后就可以进行测试了。这是一个最简单的动态加载业务UI子模块的demo。说它简单,因为它对XXX.ascx并没有实现什么业务内容,所以很不实用,顶多可以让你感受一下动态加载一个稍微实用一点的UI模块是怎么回事。
<%@ 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" />
#8
我在XXX.ascx中使用“颜色选择”来说明动态加载的控件内部的状态应该如何维系的问题。
#9
up
#10
动态添加控件呀
#11
关注,这个问题太常见了,我也不会。
以前见老师实现过类似的功能,比如上传图片控件,自己可以任意添加多个。
没好意思问要代码,因为那是老师在外接的活的代码。
以前见老师实现过类似的功能,比如上传图片控件,自己可以任意添加多个。
没好意思问要代码,因为那是老师在外接的活的代码。
#12
学习中!
#13
高手指点,开始有A页面,A页面有textbox1,点按钮1,关闭A,打开B页面,B内有textb2、按钮2,点按钮2,关闭页面B,将textbox1、textbox2内的数据生成一个xml文件,
求代码!!!!急急急
求代码!!!!急急急
#14
学习下
#15
#1
自己顶
#2
服务器端的:
用PlaceHolder作为容器控件。
还可以用js在客户端实现。
用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>");
});
$("#button1").click(function(){
$("@display").html("<a href='dsds'>点击</a>");
});
#6
又学到一招了……
#7
不十分了解asp.net原理,建议你不要轻易写动态加载控件的代码。应该使用现有的数据绑定代码,例如repeater、listview等来动态加载控件。
我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:
我以前写过一个最简的demo(因为没有什么业务内容,所以存在的bug可能看不出来),你可以用来做参考。两个文件,一个aspx、一个ascx,分别如下:
<%@ Page Language="C#" %>首先在你的网站创建这样内容的一个aspx文件,然后再创建一个名字叫做 XXX.ascx (名字必须这样)的文件其内容是
<%@ 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" />
<asp:Button ID="Button2" runat="server" Text="随便测试" UseSubmitBehavior="false" />
<hr />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</form>
</body>
</html>
<%@ Control Language="C#" ClassName="XXX" %>然后就可以进行测试了。这是一个最简单的动态加载业务UI子模块的demo。说它简单,因为它对XXX.ascx并没有实现什么业务内容,所以很不实用,顶多可以让你感受一下动态加载一个稍微实用一点的UI模块是怎么回事。
<%@ 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" />
#8
我在XXX.ascx中使用“颜色选择”来说明动态加载的控件内部的状态应该如何维系的问题。
#9
up
#10
动态添加控件呀
#11
关注,这个问题太常见了,我也不会。
以前见老师实现过类似的功能,比如上传图片控件,自己可以任意添加多个。
没好意思问要代码,因为那是老师在外接的活的代码。
以前见老师实现过类似的功能,比如上传图片控件,自己可以任意添加多个。
没好意思问要代码,因为那是老师在外接的活的代码。
#12
学习中!
#13
高手指点,开始有A页面,A页面有textbox1,点按钮1,关闭A,打开B页面,B内有textb2、按钮2,点按钮2,关闭页面B,将textbox1、textbox2内的数据生成一个xml文件,
求代码!!!!急急急
求代码!!!!急急急
#14
学习下