(100分)◆急切求助◆关于委托自定义控件的Button(方法事件),执行本页面方法的问题(在线等)

jscn123789abc 2009-03-30 09:14:49
大家好啊,向大家请教关于通过自定义控件Button执行本页面代码的问题。。。

////////自定义控件(页面)主要代码
public delegate void Athandler(object sender, EventArgs e);
public event Athandler Aclick;

//增加按钮
////usercontrol.ascx.cs自定义控件文件
protected void btn_add_Click(object sender, EventArgs e)
{
if (Aclick != null) //Aclick一直为空
{
Aclick(sender, e);
}
}

////////引用自定义控件页面的主要代码
////test.aspx.cs引用自定义控件的页面
public static bool add(object sender, EventArgs e) //增加
{
///////
//对数据库执行物料AA的插入操作
//同样是Button_add,别的页面引用该控件,可能执行对物料BB的插入操作
//

}

不知道如何把test页面的Click事件传递给Aclick?
让它执行public static bool add(object sender, EventArgs e); //增加
请大家帮忙提下建议,谢谢。。。
...全文
310 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2009-03-31
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 jscn123789abc 的回复:]
//自定义控件中的添加按纽
protected void btn_add_Click(object sender, EventArgs e)
{
//Response.Write(" <br>usercontrol <br>");
int i; //该方法内容不能为空
}
[/Quote]

如果你不需要默认的Click 事件,可以向我在15楼那样。不为ID为btn_add的BUTTON添加Click事件。
hy_lihuan 2009-03-31
  • 打赏
  • 举报
回复
/// <summary>
/// 产品管理委托
/// </summary>
public delegate void ProdListhandler(object sender, EventArgs e);
/// <summary>
/// 产品管理点击事件
/// </summary>
public event ProdListhandler prodList;
//产品管理
protected void lbtnProdList_Click(object sender, EventArgs e)
{
if (btnType.ShopList == _btnNav)
{
if (prodList != null)
{
EventArgs el = new EventArgs();
//事件发生
prodList(this, el);
}
}
else
{
//默认处理事件;外面不定义直接运行这段代码
if (!string.IsNullOrEmpty(this.ShopID))
{
Response.Redirect("../Product/ShopSetProduct.aspx?shopID=" + this.ShopID);
}
else
{
Life365.Common.JScript.Alert(this.Page, "商家编号存在问题!");
}
}
}
jscn123789abc 2009-03-31
  • 打赏
  • 举报
回复
9点以后结帖,现在离发帖起始时间还不到24小时。。。
jscn123789abc 2009-03-31
  • 打赏
  • 举报
回复
按照14楼15楼朋友建议,共享下测试用的代码,谢谢。。。
/////////////////////////////////////////////////
//自定义控制页面代码
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyButton.ascx.cs" Inherits="MyButton" %>
<asp:Button ID="btn_add" runat="server" OnClick="btn_add_Click" Text="增加" Width="68px" /></td>

//自定义控件中的添加按纽
protected void btn_add_Click(object sender, EventArgs e)
{
//Response.Write("<br>usercontrol<br>");
int i; //该方法内容不能为空
}

//////////////////////////////////////////////////
//Test001页面主要代码<%@ Register Src="MyButton.ascx" TagName="MyButton" TagPrefix="uc1" %>
<form id="form1" runat="server">
<div>
 </div>
<uc1:MyButton ID="MyButton1" runat="server" />
</form>

protected override void OnPreInit(EventArgs e)
{
Button btn1 = MyButton1.FindControl("btn_Add") as Button;
Button btn2 = MyButton1.FindControl("btn_del") as Button;

if (btn1 != null)
{
btn1.Click += new EventHandler(btnAdd_Click);
}

if (btn2 != null)
{
btn2.Click += new EventHandler(btnDel_Click);
}

base.OnPreInit(e);
}

protected void btnAdd_Click(object sender, EventArgs e)
{
Response.Write("您选择的是test001页面的“添加”按钮");

}

protected void btnDel_Click(object sender, EventArgs e)
{
Response.Write("您选择的是test001页面的“删除”按钮");
}

//////////////////////////////////////////////////
//Test2页面主要代码<%@ Register Src="MyButton.ascx" TagName="MyButton" TagPrefix="uc1" %>
<form id="form1" runat="server">
<div>
<uc1:MyButton ID="MyButton1" runat="server" />

</div>
</form>

protected override void OnPreInit(EventArgs e)
{
Button btn1 = MyButton1.FindControl("btn_Add") as Button;
Button btn2 = MyButton1.FindControl("btn_del") as Button;

if (btn1 != null)
{
btn1.Click += new EventHandler(btnAdd_Click);
}

if (btn2 != null)
{
btn2.Click += new EventHandler(btnDel_Click);
}

base.OnPreInit(e);
}

protected void btnAdd_Click(object sender, EventArgs e)
{
Response.Write("您选择的是test2页面的“添加”按钮");

}

protected void btnDel_Click(object sender, EventArgs e)
{
Response.Write("您选择的是test2页面的“删除”按钮");
}
//////////////////////////////////////////////////
ojekleen 2009-03-30
  • 打赏
  • 举报
回复

public partial class UserControl_WebUserControl : System.Web.UI.UserControl
{
public event EventHandler OnClick;

protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
if (OnClick != null)
this.OnClick(sender, e);
}
}

拐点 2009-03-30
  • 打赏
  • 举报
回复
控件代码
public delegate void Athandler(object sender,EventArgs e);
public event Athandler Aclick;


protected void btn_Add_Click(object sender, EventArgs e)
{
Aclick(sender, e);
}

引用页面aspx代码
<form id="form1" runat="server">
<div>
<uc1:MyButton ID="MyButton1" runat="server" />
</div>
</form>

引用页面cs代码
protected void Page_Load(object sender, EventArgs e)
{
MyButton1.Aclick += new UserControl_MyButton.Athandler(MyButton1_Aclick);
}

void MyButton1_Aclick(object sender, EventArgs e)
{
Response.Write("asdfasdf");
}
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复
在线等。。。
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复
这个是今天急切需要解决的问题;
在线等答案。。。
itcrazyman 2009-03-30
  • 打赏
  • 举报
回复
up
ZJ159 2009-03-30
  • 打赏
  • 举报
回复
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复

还是没有成功啊。。。。,修改以后的代码如下
//////usercontrol.ascx.cs文件public partial class usercontrol_WebUserControl : System.Web.UI.UserControl
{
//***********public delegate void AAAAthandler(object sender, EventArgs e);
public delegate void AAAAthandler(object sender, EventArgs e);
public event EventHandler Aclick;
//************Aclick +=this.btn_add_Click; //添加该行出现编译错误

//增加按钮
protected void btn_add_Click(object sender, EventArgs e)
{
if (Aclick != null)
{
Aclick(sender, e);
}
}

//////test.aspx.cs文件
public partial class GridViewToExcel : System.Web.UI.Page
{
public void InitializeComponent()
{
Button bt = (Button)(Page.FindControl("btn_add"));
bt.Click += new System.EventHandler(add); //断点调试不执行该代码 }

public static void add(object sender, EventArgs e) //增加
{
///////
//对数据库执行物料AA的插入操作
//同样是Button_add,别的页面引用该控件,可能执行对物料BB的插入操作
//

}
fdsgfdgfdsgfd 2009-03-30
  • 打赏
  • 举报
回复
不是很熟悉。试下。。事件名+=委托吧。。
xycit 2009-03-30
  • 打赏
  • 举报
回复
up
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复
谢谢啊,我抓紧试下。。。
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复
在线等答案。。。
ojekleen 2009-03-30
  • 打赏
  • 举报
回复
public event Athandler Aclick;
//直接去掉委托就可以了。
//增加按钮
////usercontrol.ascx.cs自定义控件文件
protected void btn_add_Click(object sender, EventArgs e)
{
if (Aclick != null) //Aclick一直为空
{
Aclick(sender, e);
}
}


public static bool add(object sender, EventArgs e) //增加
{
///////
//对数据库执行物料AA的插入操作
//同样是Button_add,别的页面引用该控件,可能执行对物料BB的插入操作
//
}

///
M_arlboro 2009-03-30
  • 打赏
  • 举报
回复
帮顶的.
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复
好的,谢谢。。。。
阿非 2009-03-30
  • 打赏
  • 举报
回复
我在 14 楼和15楼的回复,你可以去试下
jscn123789abc 2009-03-30
  • 打赏
  • 举报
回复
具体里面的代码我还没看太明白,
或许代码可以进一步优化。。。。。。
加载更多回复(11)

62,046

社区成员

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

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

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

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