关于服务器控件的自定义事件

hy_lihuan 2007-03-01 10:59:50
要需要动态的根据数据库的数据来生成imagebutton控件,生成的控件在页面上面点击的时候,要求生成的事件写在页面上。(因为我一个按钮可能因为页面的不同,产生完全不同的事件)
举例:我从数据库读取两个按钮:添加、修改;在一个页面上面点击添加执行添加人员的代码,在另一个页面上面点击添加执行添加课程的代码,怎么样实现阿?
更高的要求:怎么样可以写成象button这样的控件阿,直接双击控件的某一个事件就可以产生事件,写入自己的代码;
不知道说清楚了没有,考虑好久,只知道是委托,怎么实现还是不清楚,最好写有事例代码
...全文
292 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
antiking 2007-03-01
  • 打赏
  • 举报
回复
GZ
hy_lihuan 2007-03-01
  • 打赏
  • 举报
回复
cctaiyang(小刀可乐) :
你的办法是已经定义好所有的按钮,可是我需要从数据库里面的数据来确定按钮的阿;
或者说怎么样把你写好的按钮事件和我数据库的数据连结起来啊?
为梦去奋斗 2007-03-01
  • 打赏
  • 举报
回复
使用委托
cctaiyang 2007-03-01
  • 打赏
  • 举报
回复
NSToolBar.ascx的代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="NSToolBar.ascx.cs" Inherits="NSToolBar" %>
<table width="0%" border="0">
<tr>
<td><asp:ImageButton ID="imgbtn_Add" runat="server" ImageUrl="~/Images/Add.png" OnClick="imgbtn_Add_Click" /></td>
<td><asp:ImageButton ID="imgbtn_Edit" runat="server" ImageUrl="~/Images/Edit.png" OnClick="imgbtn_Edit_Click" /></td>
<td><asp:ImageButton ID="imgbtn_Delete" runat="server" ImageUrl="~/Images/Delete.png" OnClick="imgbtn_Delete_Click" /></td>
<td><asp:ImageButton ID="imgbtn_Undo" runat="server" ImageUrl="~/Images/Undo.png" OnClick="imgbtn_Undo_Click" /></td>
<td><asp:ImageButton ID="imgbtn_Save" runat="server" ImageUrl="~/Images/Save.png" OnClick="imgbtn_Save_Click" /></td>
</tr>
</table>
cctaiyang 2007-03-01
  • 打赏
  • 举报
回复
控件中的代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

// 定义ClickEventHandler事件委托
public delegate void ClickEventHandler(object sender, ImageClickEventArgs e);

public partial class NSToolBar : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{

}

/// <summary>
/// 声明新增事件
/// </summary>
public event ClickEventHandler Add_Click;
/// <summary>
/// 声明编辑事件
/// </summary>
public event ClickEventHandler Edit_Click;
/// <summary>
/// 声明删除事件
/// </summary>
public event ClickEventHandler Delete_Click;
/// <summary>
/// 声明撤消事件
/// </summary>
public event ClickEventHandler Undo_Click;
/// <summary>
/// 声明保存事件
/// </summary>
public event ClickEventHandler Save_Click;


// 定义引发事件的AddClick方法
protected void AddClick(ImageClickEventArgs e)
{
if (Add_Click != null) Add_Click(this, e);
}

// 定义引发事件的EditClick方法
protected void EditClick(ImageClickEventArgs e)
{
if (Edit_Click != null) Edit_Click(this, e);
}

// 定义引发事件的DeleteClick方法
protected void DeleteClick(ImageClickEventArgs e)
{
if (Delete_Click != null) Delete_Click(this, e);
}

// 定义引发事件的UndoClick方法
protected void UndoClick(ImageClickEventArgs e)
{
if (Undo_Click != null) Undo_Click(this, e);
}

// 定义引发事件的SaveClick方法
protected void SaveClick(ImageClickEventArgs e)
{
if (Save_Click != null) Save_Click(this, e);
}

/// <summary>
/// 在相关方法中调用引发Add事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void imgbtn_Add_Click(object sender, ImageClickEventArgs e)
{
this.AddClick(e);
}

/// <summary>
/// 在相关方法中调用引发Edit事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void imgbtn_Edit_Click(object sender, ImageClickEventArgs e)
{
this.EditClick(e);
}
/// <summary>
/// 在相关方法中调用引发Delete事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void imgbtn_Delete_Click(object sender, ImageClickEventArgs e)
{
this.DeleteClick(e);
}

/// <summary>
/// 在相关方法中调用引发Undo事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void imgbtn_Undo_Click(object sender, ImageClickEventArgs e)
{
this.UndoClick(e);
}

/// <summary>
/// 在相关方法中调用引发SaveClick事件的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void imgbtn_Save_Click(object sender, ImageClickEventArgs e)
{
this.SaveClick(e);
}

/// <summary>
/// 定义NSToolBar的Add_Visible属性
/// </summary>
public Boolean Add_Visible
{
get
{
return this.imgbtn_Add.Visible;
}
set
{
this.imgbtn_Add.Visible = value;
}
}

/// <summary>
/// 定义NSToolBar的Edit_Visible属性
/// </summary>
public Boolean Edit_Visible
{
get
{
return this.imgbtn_Edit.Visible;
}
set
{
this.imgbtn_Edit.Visible = value;
}
}

/// <summary>
/// 定义NSToolBar的Delete_Visible属性
/// </summary>
public Boolean Delete_Visible
{
get
{
return this.imgbtn_Delete.Visible;
}
set
{
this.imgbtn_Delete.Visible = value;
}
}

/// <summary>
/// 定义NSToolBar的Undo_Visible属性
/// </summary>
public Boolean Undo_Visible
{
get
{
return this.imgbtn_Undo.Visible;
}
set
{
this.imgbtn_Undo.Visible = value;
}
}

/// <summary>
/// 定义NSToolBar的Save_Visible属性
/// </summary>
public Boolean Save_Visible
{
get
{
return this.imgbtn_Save.Visible;
}
set
{
this.imgbtn_Save.Visible = value;
}
}

}
cctaiyang 2007-03-01
  • 打赏
  • 举报
回复
页面中的代码:
protected void Page_Load(object sender, EventArgs e)
{
// 注册ToolBar点击事件
NSToolBar1.Add_Click += new ClickEventHandler(NSToolBar1_Add_Click);
NSToolBar1.Edit_Click += new ClickEventHandler(NSToolBar1_Edit_Click);
NSToolBar1.Delete_Click += new ClickEventHandler(NSToolBar1_Delete_Click);
NSToolBar1.Undo_Click += new ClickEventHandler(NSToolBar1_Undo_Click);
}

/// <summary>
/// 新增
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void NSToolBar1_Add_Click(object sender, ImageClickEventArgs e)
{
}

cpp2017 2007-03-01
  • 打赏
  • 举报
回复
控件中声明事件: public event System.EventHandler btnOKClick; 然后在控件的按纽事件中触自定义的事件. 在控件的render中 "<img onclick=\"" + this.Page.GetPostBackClientEvent(this, "123") + "\" >"; 控件实现IPostBackEventHandler接口 然后 #region IPostBackEventHandler 成员 public void RaisePostBackEvent(string eventArgument) { if (eventArgument == "123") { this.btnOKClick.Invoke(sender, e); } } #endregion 调用的时候. 页面中 this.Myc1.btnOKClick += new EventHandler(Myc1_btnOKClick); void Myc1_btnOKClick(object sender, EventArgs e) { Response.Write("SSS"); }
hy_lihuan 2007-03-01
  • 打赏
  • 举报
回复
没有人回答吗?
hy_lihuan 2007-03-01
  • 打赏
  • 举报
回复
完成任务结贴!希望大家多多帮忙
fengyeng 2007-03-01
  • 打赏
  • 举报
回复
mark有时间好好看看!
reaperwu 2007-03-01
  • 打赏
  • 举报
回复
public delegate void PageIndexChangedEventHandler(object sender, System.EventArgs e);
public event PageIndexChangedEventHandler PageIndexChanged;

protected override void CreateChildControls()
{
Controls.Clear();
LinkButton lbtnFirst = new LinkButton();
lbtnFirst.ID = "lbtnFirst";
lbtnFirst.Text = "首页";
lbtnFirst.Click += new EventHandler(lbtnFirst_Click);
this.Controls.Add(lbtnFirst);
}

private void lbtnFirst_Click(object sender, System.EventArgs e)
{
if ( PageIndexChanged != null )
{
PageIndexChanged(this, e);
}
}

62,025

社区成员

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

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

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

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