Asp.net 2.0 为用户控件添加event(转)
使用user control的好处自不必说。
但是作为一个控件,虽然实际上其中可能包含很多控件(asp.net服务端控件),但是一旦在页面中注册使用,它就表现为一个独立的控件,也就是说在
编辑阶段,其包含的控件我们是访问不到的,或者说不能对其包含的控件进行控制。
这个时候,就要通过为控件添加属性和事件来提供对外的接口,使得我们可以间接的控制其“子控件”:用属性来控制其子控件的状态,而我们可以在外部访问并
改变属性值,从而达到间接控制子控件的目的;当然如果子控件发生了什么事件,我们要想知道,就可以通过public event来获得。
此Demo演示了,user
control中datalist发生了selectedindex事件,而我们在page中想利用这个事件,那么就可以这样做:
usercontrol: uc1.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="uc1.ascx.cs" Inherits="uc1" %>

<asp:DataList ID="dlshow" runat="server" RepeatDirection ="Horizontal" OnSelectedIndexChanged="dlshow_SelectedIndexChanged">
<ItemTemplate >
<asp:LinkButton ID="linkbtn" runat="server" CommandName="Select"
Text='<%#Container.DataItem %>'>
</asp:LinkButton>
</ItemTemplate>
</asp:DataList>
CS:
using System.Collections.Generic;
public partial class uc1 : System.Web.UI.UserControl
{
public event EventHandler TabClick;
private int index;
public int Index
{
get { return index; }
set { index = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
List<string> list = new List<string>();
list.Add("tab1");
list.Add("tab2");
list.Add("tab3");
list.Add("tab4");
dlshow.DataSource = list;
dlshow.DataBind();
dlshow.SelectedIndex = 0;
}
protected void dlshow_SelectedIndexChanged(object sender, EventArgs e)
{
Label lbl=this.Parent.FindControl("lblshow") as Label;
lbl.Text = "Access Parent Page Control";
index = dlshow.SelectedIndex;
TabClick(this, null);
}
}
page:showuc.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowUc.aspx.cs" Inherits="ShowUc" %>
<%@ Register TagPrefix ="my" TagName ="tab" Src ="~/uc1.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<my:tab ID="Mytab" runat="server" OnTabClick="Mytab_TabClick" />
<br />
<asp:Label ID="lblshow" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
CS:
public partial class ShowUc : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Mytab_TabClick(object sender, EventArgs e)
{
int index = Mytab.Index;
Response.Write("You selected the index"+index);
}
}
usercontrol: uc1.ascx


<asp:DataList ID="dlshow" runat="server" RepeatDirection ="Horizontal" OnSelectedIndexChanged="dlshow_SelectedIndexChanged">













































































【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗