有效利用ASP.NET用户控件的事件委托

当你在开发ASP.NET网站,对用户控件一定并不陌生。当多个页面都使用相同或相似的设计时,使用用户控件可以提高开发效率!

但往往你会因为用户控件有少许不同的要求而感觉到烦恼。比如说在开发后台处理页面的时候常常遇到的用户搜索器:

在多个页面都会要求用到用户搜索,有时候它会用于修改用户的基本资料,有时候它会用来查询用户订单,有时候它会查询用户论坛的信息。多个页面用的都 是同一个功能的搜索器,但当按下“选择”键的时候,它们要求实现不同的功能。这时候,你可以使用用户控件的事件来实现这个功能。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    onrowcommand="GridView1_RowCommand" >
  <Columns >

       ...................

       <asp:TemplateField>
          <ItemTemplate>

             <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Select" CommandArgument='<%#Eval("ID")%>'>

                    选择
              </asp:LinkButton>
          </ItemTemplate>
      </asp:TemplateField>

 </Columns>

</asp:GridView>

首先,你先在控件里面设定事件对象CommandEventHandler,在GridView1的事件被激发时,直接调用CommandEventHandler处理方法

public partial class UserControl : System.Web.UI.UserControl
{

    public event GridViewCommandEventHandler CommandEventHandler;


    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (CommandEventHandler != null)
            CommandEventHandler(sender, e);
    }

   ................

}

在页面调用用户控件时,绑定用户控件的CommandEventHandler的处理方法

 <ascx:UserControl ID="UserControl1" runat="Server" OnCommandEventHandler="UserControl_OnCommanEventHandler" />   

   protected void UserControl_OnCommanEventHandler(object sender, GridViewCommandEventArgs e)
    {

         if(e.CommandName=="Select")

         {

               ...................
               //此时,你就可以根据不同的功能要求而实现不同的操作了。

         }
    }

总结一下,适当地利用ASP.NET用户控件的属性和事件,可以更有效地提高用户控件的可复用性,减少不必要的代码,提高页面开发的工作效率,你还可以使用自定义事件实现有效的开发,使用户控件不受控件事件的拘束!

 

对 JAVA 开发有兴趣的朋友欢迎加入QQ群:174850571 共同探讨!
对 .NET  开发有兴趣的朋友欢迎加入QQ群:162338858 共同探讨 !

posted on 2011-01-16 18:20  风尘浪子  阅读(1885)  评论(8编辑  收藏  举报

导航