zoukankan      html  css  js  c++  java
  • 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);
        }

    }
  • 相关阅读:
    手机传感器大科普:手机中的陀螺仪、加速器和磁力计
    安卓新导入工程中gen目录下无R文件解决方法
    自写的 c# 锚点,前端显示 读书 记事本(一)
    update access 不能更新
    NHibenate初学资源推荐(切肤之痛)
    ASP.NET页面刷新和定时跳转
    c#(或vb.net)程序改进 (转载)
    感恩节的一天
    了解自己以及明白牛人会找什么样的人创业
    从别人如何读简历 看我们该如何成长
  • 原文地址:https://www.cnblogs.com/lynnlin/p/1218162.html
Copyright © 2011-2022 走看看