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(
thisnull);
    }


}
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);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值