在.net(C#)中 Response.write("执行"); } protected void Button1_Click(object sender, EventArgs e) {

在.net(C#)中,我想在点击一个按钮时动态创建另一个按钮,但却不能执行新生成的按钮的Click事件,不知道如何解决,望高手帮忙。我的财富值不够了,但希望有人可以帮我,... 在.net(C#)中,我想在点击一个按钮时动态创建另一个按钮,但却不能执行新生成的按钮的Click事件,不知道如何解决,望高手帮忙。我的财富值不够了,但希望有人可以帮我,谢谢了。(我不想把创建按钮的函数放在Page_load中,我知道放在这里可以。)
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//createButton();
}
protected void createButton()
{
Button Btn = new Button();
Btn.Text = "";
Btn.ID = "MyBtn";
Btn.Height = 13;
Btn.Width = 13;
Btn.Style.Value = "position:absolute;top:200;left:200";
Btn.Click += new EventHandler(this.Btn_Click);
this.FindControl("Form1").Controls.Add(Btn);
}
protected void Btn_Click(object sender, EventArgs e)
{
Response.write("执行"); }
protected void Button1_Click(object sender, EventArgs e)
{
createButton();
}
后面的代码不小心粘到题目上了……
展开
 我来答
smart_ljh
2010-10-24 · TA获得超过378个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:166万
展开全部
1.可以用Response.Write来动态写一个客户端控件<input type="button" id="动态给定" name="同id" value="名称" onclick="fun();" />;
2.引用Jquery脚本库(jquery-1.4.2.js);
3.建立Ajax访问页面如:当前站点下的Ajax文件夹下的ClickAjax.aspx页面;
4.在ClickAjax.aspx.cs文件里写以下方法:
privete string operator=string.Empty;
privete voit GetParam()
{
operator=获取页面参数值(这里自己写);
}
5.再写一个操作类:
private voit OperatorMethod()
{
switch(operator)
{
case "CreateBtn"://创建动态按钮
{
CreateBtn();
break;
}
}
}
6.在ClickAjax.aspx.cs页面的Page_Load里调用OperatorMethod();
7.在当前的页面上写以下脚本:
<script type="text/javascript">
function fun()
{
$.ajax({
type:"post",
url:"/Ajax/ClickAjax.aspx?operator=CreateBtn",
data:"",//这里可有可无,格式:与页面地址传参相同
success:function (d){
//此处d即CreateBtn方法返回的结果,在CreateBtn方法通过Response.Write来返回,最后一定要写Response.End();
}
});
}
</script>
8.当然以上可以将按钮的click事件的内容写到类同CreateBtn方法里;
9.以上的看懂了其它的大同小易;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
susieweijs
2010-10-24 · 超过16用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:0
展开全部
放页面加载page_load里是对的,至于你说的点击时候没有执行事件,是因为asp.net的服务器控件button在点击的时候,页面会回传到服务器端然后重新解析一次页面,造成你的页面重新加载了。
也就是说你的操作,是重新执行了page_load,而不是执行的btn_click,

protected void Page_Load(object sender, EventArgs e)
{
if(!ispostback)
{
createButton();
}
}
判断下是否是回传页面,如果是第一次加载,那么,程序将创建控件和事件。 是点按钮提交回去的,程序执行你的onclick函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FantasyChump
2010-10-22 · TA获得超过3288个赞
知道大有可为答主
回答量:2127
采纳率:0%
帮助的人:2235万
展开全部
你要明白,Click或Load事件发生在页面处理的过程中,此时页面的控件树已经确定了.虽然返回的是有动态创建的按钮的信息,但系统处理客户端提交数据时,Load事件并没有触发过,也就是此时控件树中这个控件并不存在.要解决此问题,可以将动态创建放在更早的位置,比如OnInit函数中,以便于系统初始化这个控件的返回数据.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
snake64
2010-10-22 · TA获得超过466个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:362万
展开全部
只能放到page_load里面 要是不放page_load你点击按钮回发的时候Btn就不存在了,不信你试试触发其他的事件页面回发后Btn就没了,所以Btn_Click是不会执行的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式