这是一个很常见的使用场景,尤其是出现了UpdatePanel之后:页面中有一排菜单,点击菜单中的每一项,都会使某个UpdatePanel中出现不同的控制面板。在开发时,往往会将每个的控制面板写成不同的用户控件,点击菜单时事实上就是在UpdatePanel中放入不同的用户控件。
如果要开发这样的功能,从理论上来说并不困难,但是如果要能够在控件之间灵活切换,甚至要从控件A的某个操作中切换到控件B,可能就需要增加控件之间的耦合度了。因此,如何控制这样的切换似乎需要细细考虑一下。
在这里,我选择使用一个第三方的控件来进行统一处理,这个控件就是SwitchPartManager。在了解这个控件的实现之前,我们先来看一下一个简单的使用示例吧。
使用效果
首先,在页面中,会使用两个按钮在两个用户控件之间进行切换。在SwitchPartManager的PlaceHolderUpdatePanelID属性指定了作为容器的UpdatePanel,而点击不同的按钮,则会调用ScriptManager的SwitchTo方法切换至不同的控件。如下:
Default.aspx
<jeffz:SwitchPartManager ID="SwitchPartManager1" runat="server"
PlaceHolderUpdatePanelID="UpdatePanel1" />
<asp:Button ID="ButtonA" runat="server" Text="ControlA" OnClick="ButtonA_Click" />
<asp:Button ID="ButtonB" runat="server" Text="ControlB" OnClick="ButtonB_Click" />
<hr />
<asp:UpdatePanel ID="UpdatePanel1" runat="server"></asp:UpdatePanel>
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
ScriptManager sm = ScriptManager.GetCurrent(this);
sm.RegisterAsyncPostBackControl(this.ButtonA);
sm.RegisterAsyncPostBackControl(this.ButtonB);
}
protected void ButtonA_Click(object sender, EventArgs e)
{
SwitchPartManager.GetCurrent(this).SwitchTo("ControlA");
}
protected void ButtonB_Click(object sender, EventArgs e)
{
SwitchPartManager.GetCurrent(this).SwitchTo("ControlB");
}
在ControlA中有一个按钮,点击它之后将会切换到ControlB。如下:
ControlA.ascx
This is Control A.
<asp:LinkButton ID="LinkButton1" runat="server"
OnClick="LinkButton1_Click">Switch To Control B</asp:LinkButton>
ControlA.ascx.cs
protected void LinkButton1_Click(object sender, EventArgs e)
{
SwitchPartManager.GetCurrent(this.Page).SwitchTo("ControlB");
}
而在ControlB中,它自身含有一个UpdatePanel和一个按钮,点击按钮则可以刷新时间:
ControlB.ascx
This is Control B
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%= DateTime.Now %>
<asp:Button ID="Button1" runat="server" Text="Refresh Time" />
</ContentTemplate>
</asp:UpdatePanel>
编写代码,控件之间的切换都是非常的容易。大家可以点击这里查看使用效果。 查看 http://www.qqread.com/dotnet/e396823.html进入讨论组讨论。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 用vb.net实现闹钟提醒程序 (9次浏览)
- C#变得越来越臃肿是不可避免的? (7次浏览)
- .NET开发人员犯的6大安全错误 (6次浏览)
- C#与EXCEL的数据交互(一) (5次浏览)
- vb.net GDI+入门——画笔、画刷和颜色 (3次浏览)
- C# 3.0新特性之扩展方法 (1次浏览)
- VB.Net实现进程监视器的方法 (1次浏览)
- 请跟我来--使用Ext搞个原型 (1次浏览)
- ASP.NET 3.5 Extensions带来什么 (1次浏览)
- WPF的Attached属性 (0次浏览)



