有效利用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 共同探讨 !