紧急求助:用户控件里的控件事件!!!!

usavoa1 2008-11-05 04:18:15
我有一个用户控件(do.ascx),该用户控件内有个按钮
<asp:Button ID="btndel" runat="server"  />

我现在把这个用户控件拖入到一个页面(index.aspx)里,请问如何在 index.aspx.cs内执行这个用户控件里的按钮单击事件!?

因为这个用户控件是要被放在不同的页面中,所以执行的方法也不一样!!!
有知道答案的好心人快告诉吧,分不够再加,谢谢
...全文
165 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
usavoa1 2008-11-05
  • 打赏
  • 举报
回复
7 楼 + 11 楼 的,不好意思,我刚才回复的时候没看到7楼的回复,所以才说把分90%给5楼了 -_-,感谢7、9楼朋友的热情回复,
phper2008 2008-11-05
  • 打赏
  • 举报
回复
7 楼 + 11 楼 给出完整的实现方法,解答完毕!只提供参看!

给不给分无所谓!
phper2008 2008-11-05
  • 打赏
  • 举报
回复
现在我们就可以在调用控件的页面给出委托实现方法:


//test.aspx假设调用了该控件
namespace np1
{
public partial class test:System.Web.UI.Page
{
//这里假设你已经在test.aspx里注册了do控件,且id为Uc1
protected void Page_Load(object sender,EventArgs e)
{
Uc1.OnBtnClick += new BtnClickDelegate(btnclickfunc);
}
//注意,给出具体实现的方法要和委托结构一样
private void btnclickfunc()
{
//这里给出具体实现
//以后在每个调用的页面给出不同的实现就可以了
}
}
}


mjjzg 2008-11-05
  • 打赏
  • 举报
回复
用户控件里的事件写在用户控件里,而不是你的调用页面里,所以是没法实现的
如果真的想实现的话要不就是多个不同的用户控件,要不就用JS来做
jiezi316 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 phper2008 的回复:]
这样的话需要用到委托,
你需要按钮做的东西先寄存在一个委托上,然后在调用此控件的页面里实现此委托!

以下实现方法:
如:

C# code
using System;
using System.Data;
using System.Web;
//...自己加上
/*
假设你项目的命名空间是np1,一般一个项目会用一个统一的命名空间,vs2005里建立新页面默认是不加命名空间的!
没有也是可以的,需要的话自己手动加上,不过在aspx的Inherits=""里也要加上如np1.do
*/

name…
[/Quote]

就是这个,定义委托,将事件抛给调用页面
usavoa1 2008-11-05
  • 打赏
  • 举报
回复
再等个5分钟,如果没有其他回复,分90%给5楼了
phper2008 2008-11-05
  • 打赏
  • 举报
回复
这样的话需要用到委托,
你需要按钮做的东西先寄存在一个委托上,然后在调用此控件的页面里实现此委托!

以下实现方法:
如:

using System;
using System.Data;
using System.Web;
//...自己加上
/*
假设你项目的命名空间是np1,一般一个项目会用一个统一的命名空间,vs2005里建立新页面默认是不加命名空间的!
没有也是可以的,需要的话自己手动加上,不过在aspx的Inherits=""里也要加上如np1.do
*/

namespace np1
{
//添加代理,如果要参数请添加参数,这里设置无参数无返回值
//这是关键,在do.aspx外定义,位置可以放在np1下的其他地方
public delegate void BtnClickDelegate();

/*这里类名都是根据你页面假设的,参考我代码就可以了,不一定要一样*/
public partial class do:System.Web.UI.UserContril
{
//在控件里定义按钮委托对象
public BtnClickDelegate OnBtnClick;

//"btndel"的click事件
//控件按钮在点击时实际上是执行委托的方法
//这个委托方法将在你需要引用控件的页面里给出
protected void btndel_Click(object sender,EventArgs e)
{
if(OnBtnClick != null){OnBtnClick();}
}
}
}
gjfizx 2008-11-05
  • 打赏
  • 举报
回复
5楼的代码放在index.aspx页面里就可以
gjfizx 2008-11-05
  • 打赏
  • 举报
回复
    protected void Page_Load(object sender, EventArgs e)
{
//uc1用户控件
(uc1.FindControl("Button1") as Button).Click += new EventHandler(Button1_Click);
}
protected void Button1_Click(object sender, EventArgs e)
{
string keyword=(uc1.FindControl("TextBox1") as TextBox).Text;
//绑定操作
}
lala_1901 2008-11-05
  • 打赏
  • 举报
回复
自定义用户控件最好做成独立的,拖来就可以用,也就是说和页面逻辑是分离,不依赖与页,否则控件就没有意义了。
w161134025 2008-11-05
  • 打赏
  • 举报
回复
楼主还不是很明白你的意思,把代码放出来看下,你到底要做什么
小河 2008-11-05
  • 打赏
  • 举报
回复
这个做不到吧,
用户控件是独立的
可以在用户控件的aspx.cs文件里设
usavoa1 2008-11-05
  • 打赏
  • 举报
回复
怎么没人回答我啊??

62,234

社区成员

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

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

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

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