程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net 2.0為用戶控件添加event

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

編輯:關於ASP.NET

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved