aspx页面动态加载.ascx页面,.ascx页面有一按钮,点击触发不了事件?

cyhcyhhychyc 2010-06-04 08:54:25
点击这个按钮,aspx页面只是刷新一下,断点确定没有执行OnClick事件
要实现正常点击事件,好像在.aspx及.ascx页面都要动点手术。希望会者点拨。
...全文
459 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2010-06-05
  • 打赏
  • 举报
回复
Default.aspx:

<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button1_Click" />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>


Default.aspx.cs:

protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["Load"] != null && Convert.ToInt32(ViewState["Load"]) == 1)
{
LoadControl();
}
}

void LoadControl()
{
this.PlaceHolder1.Controls.Clear();
this.PlaceHolder1.Controls.Add(this.LoadControl("WebUserControl1.ascx"));
}

protected void Button1_Click(object sender, EventArgs e)
{
LoadControl();
ViewState["Load"] = 1;
}



WebUserControl1.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication3.WebUserControl1" %>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />


WebUserControl1.ascx.cs:

protected void Page_Load(object sender, EventArgs e)
{

}

protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("Clicked");
}



张栋01 2010-06-05
  • 打赏
  • 举报
回复
也有可能你的click时间的位置写错了吧。。看看你页面有几个触发事件,再仔细观察 是否 位置不对啊
cyhcyhhychyc 2010-06-05
  • 打赏
  • 举报
回复
回复Sandy945,我是在点击aspx页面的另一个按钮时触发加载.ascx的
qiqishardgel 2010-06-05
  • 打赏
  • 举报
回复
帮顶!
tmxsl1214 2010-06-05
  • 打赏
  • 举报
回复
runat="server"
阿非 2010-06-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 cyhcyhhychyc 的回复:]
回复Sandy945,我是在点击aspx页面的另一个按钮时触发加载.ascx的
[/Quote]

就是了,这个问题的本质就是事件的加载顺序。

具体的解决方案,你可以看oj 的代码, 或许有些不完善,但整体思路已经体现了。
Adechen 2010-06-05
  • 打赏
  • 举报
回复
貌似有点难度,密切关注中。。。。
赵牧野 2010-06-05
  • 打赏
  • 举报
回复
关注一下,是有点难度。。
阿非 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cyhcyhhychyc 的回复:]
Sandy945,你所发的虽有一定启发,但还是不行。要知道我的.ascx是动态添加的。大家能否测试后的呢。
[/Quote]

和你是否是动态加载的无关,和你.ascx在什么事件中加载有关。
xlj_2008 2010-06-04
  • 打赏
  • 举报
回复
帮顶~~~·
我姓区不姓区 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cyhcyhhychyc 的回复:]
楼上的回答先谢了。但是,还不是我想要的。我的按钮是放在.ascx页面,然后通过 PlaceHolder1.Controls.Clear();
UserControl uc = (UserControl)LoadControl("ctl/report.ascx");
PlaceHolder1.Controls.Add(uc);
以上三段代码动态加入到aspx页面。我在vs中双击按钮自动……
[/Quote]
那你按完这个按钮以后,用户控件还在不在页面上?
cyhcyhhychyc 2010-06-04
  • 打赏
  • 举报
回复
Sandy945,你所发的虽有一定启发,但还是不行。要知道我的.ascx是动态添加的。大家能否测试后的呢。
cyhcyhhychyc 2010-06-04
  • 打赏
  • 举报
回复
楼上的回答先谢了。但是,还不是我想要的。我的按钮是放在.ascx页面,然后通过 PlaceHolder1.Controls.Clear();
UserControl uc = (UserControl)LoadControl("ctl/report.ascx");
PlaceHolder1.Controls.Add(uc);
以上三段代码动态加入到aspx页面。我在vs中双击按钮自动生成的点击事件是在.ascx页面。现在就是这个事件在点击按钮后不能执行到
wuyq11 2010-06-04
  • 打赏
  • 举报
回复
执行用户控件中事件,可通过委托实现
xingshungames 2010-06-04
  • 打赏
  • 举报
回复
学习楼上
wuyq11 2010-06-04
  • 打赏
  • 举报
回复
private void adduc()
{
WebUserControl1 uc=(WebUserControl1)Page.LoadControl("WebUserControl1.ascx");
uc.ID="uc";
this.PlaceHolder1.Controls.Add(uc);
}
private void Button1_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]==null)
{
adduc();
ViewState["adduc"]=1;
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]!=null)
{
Response.Write(((WebUserControl1)Page.FindControl("uc")).ucb.Text);
}
}
不要ispostback
koukoujiayi 2010-06-04
  • 打赏
  • 举报
回复
想在aspx页面获得Click事件,则应该在ascx文件中设置Button的属性!
如ascx文件中有一Button1,则创建属性为:
    public Button innerButton
{
get
{
return Button1;
}
}

在aspx.cs文件中如用户控件的id为WebUserControl1,则点击Button的Click事件:
    protected void Page_Load(object sender, EventArgs e)
{
WebUserControl1.innerButton.Click+=new EventHandler(innerButton_Click);
}

private void innerButton_Click(object sender, EventArgs e)
{
//这里就是你需要的
}


cyhcyhhychyc 2010-06-04
  • 打赏
  • 举报
回复
以上两位的回答先谢了,但是都不对。请仔细看标题。一个字一个字的看
加载更多回复(2)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧