引入ASP.NET 2.0 Web 部件连接
发布时间:2006-04-13 23:37:01 来源:msdn 网友评论 0 条 为一个 Web 部件连接计时
当您开始设计支持连接的 Web 部件时,了解所涉及的计时是非常重要的。图 4 显示在 HTTP GET 期间运行提供者 Web 部件和使用者 Web 部件的页面的一小部分。虽然有更多在 HTTP POST 期间激发的页面级事件,但是连接建立时的计时则保持相同。
图 4 中显示的跟踪信息阐释了对于标准的 ASP.NET 2.0 页面级事件而言,每个连接方法何时激发。您应该能够从该跟踪信息中看到,WebPartManager 在页面级 LoadComplete 命令中将 Web 部件连接在一起。
需要牢记的是,当页面级事件 PreInit、Init、PreLoad 和 Load 执行时,Web 部件连接尚未建立。这意味着您绝不应该尝试访问使用者 Web 部件的处理程序方法(它绑定到这些事件之一)中的提供者。在尝试访问提供者 Web 部件之前,使用者 Web 部件中的代码必须等待 LoadComplete 事件执行完毕。
在本示例中,使用者 Web 部件处理 SqlDataSource 控件的 Selecting 事件,该事件在页面级 PreRender 事件中激发。此时,访问提供者并检索客户 ID 是安全的。
定义静态 Web 部件连接
既然您已经看到如何创建支持连接的 Web 部件,并且了解了所涉及的计时,现在该探究如何将它们实际连接在一起了。您将看到,可以将标记直接添加到一个 Web 部件页面定义中,以便建立一个静态 Web 部件连接。也可以在运行时通过代码或用户交互动态建立 Web 部件连接。首先,我要展示如何在两个 Web 部件之间创建一个静态连接,因为这是最简单的方法。
要在一个页面上的两个 Web 部件之间创建静态 Web 部件连接,需要将 StaticConnections 元素添加到 WebPartManager 标记中:
要使该代码正常运行,名为 Customers1 的提供者 Web 部件和名为 CustomerDetails1 的使用者 Web 部件也必须在同一页面上的 Web 部件区域中静态定义和正确命名。
需要牢记的是,每个页面只有一个 WebPartManager 控件。然而,在许多涉及 Web 部件的应用程序设计中,您会发现将 WebPartManager 添加到用户控件或母版页很方便,原因是可以在许多页面上重用它。
当 Web 部件页面基于母版页,或者使用的是包含 WebPartManager 控件的用户控件时,您不能添加 WebPartManager 控件的第二个示例来定义 StaticConnections 标记。针对这些情况,ASP.NET 2.0 Web 部件控件集提供了 ProxyWebPartManager 控件。以下是关于如何使用它的示例:
ProxyWebPartManager 控件的价值在于,它允许您在页面无法包含 WebPartManager 标记时,在页面级添加静态连接。在本专栏附带的示例页面 default.aspx 中,必须使用 ProxyWebPartManager 建立一个静态 Web 部件连接,原因是 WebPartManager 已经封装在名为 WebPartManagerPanel.ascx 的用户控件中。
当您开始设计支持连接的 Web 部件时,了解所涉及的计时是非常重要的。图 4 显示在 HTTP GET 期间运行提供者 Web 部件和使用者 Web 部件的页面的一小部分。虽然有更多在 HTTP POST 期间激发的页面级事件,但是连接建立时的计时则保持相同。
![]() 图 4 |
图 4 中显示的跟踪信息阐释了对于标准的 ASP.NET 2.0 页面级事件而言,每个连接方法何时激发。您应该能够从该跟踪信息中看到,WebPartManager 在页面级 LoadComplete 命令中将 Web 部件连接在一起。
需要牢记的是,当页面级事件 PreInit、Init、PreLoad 和 Load 执行时,Web 部件连接尚未建立。这意味着您绝不应该尝试访问使用者 Web 部件的处理程序方法(它绑定到这些事件之一)中的提供者。在尝试访问提供者 Web 部件之前,使用者 Web 部件中的代码必须等待 LoadComplete 事件执行完毕。
在本示例中,使用者 Web 部件处理 SqlDataSource 控件的 Selecting 事件,该事件在页面级 PreRender 事件中激发。此时,访问提供者并检索客户 ID 是安全的。
定义静态 Web 部件连接
既然您已经看到如何创建支持连接的 Web 部件,并且了解了所涉及的计时,现在该探究如何将它们实际连接在一起了。您将看到,可以将标记直接添加到一个 Web 部件页面定义中,以便建立一个静态 Web 部件连接。也可以在运行时通过代码或用户交互动态建立 Web 部件连接。首先,我要展示如何在两个 Web 部件之间创建一个静态连接,因为这是最简单的方法。
要在一个页面上的两个 Web 部件之间创建静态 Web 部件连接,需要将 StaticConnections 元素添加到 WebPartManager 标记中:
<asp:WebPartManager ID="WebPartManager1" runat="server"> <StaticConnections> <asp:WebPartConnection ID="c1" ProviderID="Customers1" ConsumerID="CustomerDetails1" /> </StaticConnections> </asp:WebPartManager> |
要使该代码正常运行,名为 Customers1 的提供者 Web 部件和名为 CustomerDetails1 的使用者 Web 部件也必须在同一页面上的 Web 部件区域中静态定义和正确命名。
需要牢记的是,每个页面只有一个 WebPartManager 控件。然而,在许多涉及 Web 部件的应用程序设计中,您会发现将 WebPartManager 添加到用户控件或母版页很方便,原因是可以在许多页面上重用它。
当 Web 部件页面基于母版页,或者使用的是包含 WebPartManager 控件的用户控件时,您不能添加 WebPartManager 控件的第二个示例来定义 StaticConnections 标记。针对这些情况,ASP.NET 2.0 Web 部件控件集提供了 ProxyWebPartManager 控件。以下是关于如何使用它的示例:
<asp:ProxyWebPartManager ID="ProxyWebPartManager1" runat="server"> <StaticConnections> <asp:WebPartConnection ID="c1" ProviderID="Customers1" ConsumerID="CustomerDetails1" /> </StaticConnections> </asp:ProxyWebPartManager> |
ProxyWebPartManager 控件的价值在于,它允许您在页面无法包含 WebPartManager 标记时,在页面级添加静态连接。在本专栏附带的示例页面 default.aspx 中,必须使用 ProxyWebPartManager 建立一个静态 Web 部件连接,原因是 WebPartManager 已经封装在名为 WebPartManagerPanel.ascx 的用户控件中。
- 推荐阅讯
- 当ASP.NET撞上JSF之框架比较
- ASP.NET Atlas简单控件介绍之界面控件
- ASP.NET 2.0中轻松实现网站换肤
- 在ASP.NET中自动给URL加上超链接
- ASP.NET 2.0客户端回调的实现分析
- 如何充分利用ASP.NET 2.0预编译
- ASP.NET 2.0页面框架简要慨述
- ASP.NET2.0中Gridview中数据操作技巧
- ASP.NET2.0数据操作之创建业务逻辑层
- 在ASP.NET中跨页面实现多选
- 阅读排行
- 1.用ASP.NET 2.0设计网络在线投票系统
- 2.在ASP.Net 2.0中实现多语言界面的方法
- 3.轻松加密ASP.NET 2.0 Web程序配置信息
- 4.在ASP.NET中使用AJAX的简单方法
- 5..NET 2.0中的企业库异常处理块简述
- 6.面向.NET开发人员的Ajax 技术平台策略
- 7.揭开ASP.NET中Cookie编程的奥秘
- 8.ASP.NET2.0服务器控件之创建自定义控件
- 9.ASP.NET2.0中Gridview中数据操作技巧
- 10.ASP.NET 2.0发送电子邮件全面剖析之二
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册

