熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Asp.net 2.0 為用戶控件添加event

2013-11-13 10:03:54  來源: .NET編程 
使用user control的好處自不必說
 
  但是作為一個控件雖然實際上其中可能包含很多控件(服務端控件)但是一旦在頁面中注冊使用它就表現為一個獨立的控件也就是說在編輯階段其包含的控件我們是訪問不到的或者說不能對其包含的控件進行控制
 
  這個時候就要通過為控件添加屬性和事件來提供對外的接口使得我們可以間接的控制其子控件用屬性來控制其子控件的狀態而我們可以在外部訪問並改變屬性值從而達到間接控制子控件的目的當然如果子控件發生了什麼事件我們要想知道就可以通過public event來獲得
 
  此Demo演示了user control中datalist發生了selectedindex事件而我們在page中想利用這個事件那麼就可以這樣做
 
usercontrol: ucascx



<%@ Control Language=C# AutoEventWireup=true CodeFile=ucascxcs Inherits=uc %>
<asp:DataList ID=dlshow runat=server  RepeatDirection =Horizontal OnSelectedIndexChanged=dlshow_SelectedIndexChanged>
 <ItemTemplate >
   <asp:LinkButton ID=linkbtn runat=server CommandName=Select
   Text=<%#ContainerDataItem %>>
   </asp:LinkButton>
 </ItemTemplate>
</asp:DataList>CS:



using SystemCollectionsGeneric;

public partial class uc : SystemWebUIUserControl
{
    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>();
        listAdd(tab);
        listAdd(tab);
        listAdd(tab);
        listAdd(tab);

        dlshowDataSource = list;
        dlshowDataBind();

        dlshowSelectedIndex = ;
    }
    protected void dlshow_SelectedIndexChanged(object sender EventArgs e)
    {
       Label lbl=thisParentFindControl(lblshow) as Label;
       lblText = Access Parent Page Control;

        index = dlshowSelectedIndex;

        TabClick(this null);
    }

}page:showucaspx:



<%@ Page Language=C# AutoEventWireup=true CodeFile=ShowUcaspxcs Inherits=ShowUc %>
<%@ Register TagPrefix =my TagName =tab Src =~/ucascx %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML  Transitional//EN transitionaldtd>

<html xmlns= >
<head runat=server>
    <title>未命名頁面</title>
</head>
<body>
    <form id=form 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 : SystemWebUIPage
{
    protected void Page_Load(object sender EventArgs e)
    {
       
    }

    protected void Mytab_TabClick(object sender EventArgs e)
    {
        int index = MytabIndex;

        ResponseWrite(You selected the index+index);
    }
}
From:http://tw.wingwit.com/Article/program/net/201311/12455.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.