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

hy_lihuan 2007-03-01 10:59:50
要需要动态的根据数据库的数据来生成imagebutton控件,生成的控件在页面上面点击的时候,要求生成的事件写在页面上。(因为我一个按钮可能因为页面的不同,产生完全不同的事件)
举例:我从数据库读取两个按钮:添加、修改;在一个页面上面点击添加执行添加人员的代码,在另一个页面上面点击添加执行添加课程的代码,怎么样实现阿?
更高的要求:怎么样可以写成象button这样的控件阿,直接双击控件的某一个事件就可以产生事件,写入自己的代码;
不知道说清楚了没有,考虑好久,只知道是委托,怎么实现还是不清楚,最好写有事例代码
...全文
297 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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);
}
}
第1章 服务器控件概述及开发环境部署 .1 1.1 自定义服务器控件 1 1.2 服务器控件在软件开发过程中的作用 1 1.3 在控件开发中提升自己 2 1.4 可继承控件基类介绍 2 1.5 运行一个简单的控件 7 1.5.1 开发一个简单控件 7 1.5.2 部署和运行 11 1.6 控件生命周期 12 1.6.1 概述 12 1.6.2 用代码跟踪控件生命周期过程 14 1.7 本章总结 17 第2章 服务器控件开发中的调试技术 18 2.1 预置代码示例 18 2.2 调试页面服务端代码 19 2.3 服务器控件的调试 20 2.3.1 运行模式下的调试方法 20 2.3.2 设计模式下的调试方法 20 2.4 javascript脚本调试方法 22 2.4.1 调试页面中的javascript脚本(方法一) 22 .2.4.2 调试页面中的javascript脚本(方法二) 23 2.4.3 调试非嵌入式javascript脚本文件 23 2.4.4 调试嵌入式javascript脚本资源文件 24 2.4.5 高效率调试的技巧 24 2.5 ajax library对javascript调试支持 26 2.6 本章总结 26 第3章 从零开始开发服务器控件 27 3.1 选择基类 27 3.2 控件呈现顺序 28 3.3 render呈现控件的几种方式 30 3.3.1 使用htmltextwriter类输出 30 3.3.2 直接输出html标签 32 3.3.3 使用服务器控件的rendercontrol方法 33 3.4 addattributestorender方法 34 3.5 createchildcontrols方法 35 3.6 inamingcontainer接口 36 3.7 实现复合控件 38 3.7.1 createchildcontrols方法 39 3.7.2 childcontrolscreated属性 39 3.7.3 ensurechildcontrols方法 39 3.7.4 recreatechildcontrols方法 39 3.7.5 controls属性 40 3.7.6 hascontrols方法 40 3.7.7 hasevents方法 40 3.7.8 findcontrol方法 41 3.7.9 实现复合控件示例 41 3.8 常用开发技巧 51 3.8.1 designmode属性 51 3.8.2 屏蔽基类控件中的属性 52 3.8.3 page.request.browser属性 53 3.8.4 设置控件id规范 53 3.8.5 增强findcontrol功能 54 3.8.6 映射服务端控件值到客户端 55 3.8.7 禁止派生自compositecontrol的控件创建子控件 56 3.8.8 使用createchildcontrols的注意事项 56 3.8.9 不要误解设计元属性defaultvalue 57 3.8.10 在render方法中利用基类资源 57 3.8.11 条件编译&条件属性 60 3.9 本章总结 61 第4章 服务器控件属性 62 4.1 控件属性的作用 62 4.1.1 系统属性 62 4.1.2 自定义属性 62 4.2 简单属性 63 4.3 属性的设计时特性 64 4.4 复杂属性 67 4.4.1 概述 67 4.4.2 复杂属性的几种标记形式 67 4.4.3 深入研究——复杂属性分析器 79 4.5 深入研究——定制自己的属性编辑器 85 4.5.1 系统属性编辑器 85 4.5.2 定制属性编辑器 91 4.6 类型转换器 126 4.6.1 系统类型转换器 126 4.6.2 定制自己的类型转换器 128 4.7 实现自定义属性 138 4.8 本章总结 145 第5章 事件和数据回发机制 146 5.1 控件事件和数据回发概述 146 5.1.1 事件及其意义 146 5.1.2 数据回发机制 147 5.2 事件和数据回发机制的实现 148 5.2.1 客户端回传事件接口ipostbackeventhandler 148 5.2.2 客户端回发/回调揭密 150 5.2.3 回传数据处理接口ipostbackdatahandler 153 5.2.4 正确处理继承基类中控件事件 159 5.2.5 扩展kingtextbox控件功能(kingtextboxcanpostevent控件) 161 5.3 复合控件事件处理机制

62,243

社区成员

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

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

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

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