如何:声明两个 Web 部件控件之间的静态连接
更新:2007 年 11 月
开发人员通过以页持久性格式声明连接,可以创建两个服务器控件之间的静态 Web 部件连接。静态连接与声明控件一样将成为网页上的永久对象。所有用户都可以看到静态连接(因为它是共享对象);另外,虽然他们可断开该连接(前提是向他们提供了可这样做的用户界面 (UI) 选项),但他们决不能删除该连接对象。如果您需要一个始终可用于所有用户的连接但不希望用户可以选择将其从页中删除,则静态连接是一个不错的选择。有关连接的详细信息,请参见 WebPartConnection 和 Web 部件连接概述。有关静态连接的详细信息,请参见 IsStatic。本主题演示如何创建两个 WebPart 控件之间的静态连接。
说明: |
---|
本主题着重说明如何在网页的标记中声明静态连接。若要声明两个服务器控件之间的静态 Web 部件连接,这两个控件必须正确设计为处理连接,并且它们必须位于 WebPartZoneBase 区域中。有关对参与连接的控件要求的完整说明,请参见 WebPartConnection。若要获取两个 WebPart 控件以及用于承载本主题中所演示的静态连接的网页的代码示例,请参见 IsStatic 属性的“示例”部分。 |
在区域中声明服务器控件
在网页将包含连接的正文部分中添加一个 <webpartzone> 元素,并添加一个 <zonetemplate> 子元素以包含添加到区域的服务器控件。这些代码应类似于下面的示例。
<asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> </ZoneTemplate> </asp:WebPartZone>
在 <zonetemplate> 元素的两个标记之间,声明将用作 Web 部件连接中的提供方控件和使用者控件的服务器控件。这些控件必须已设计为参与连接。您还可以向该区域添加其他服务器控件。正如本主题前面说明的那样,此示例中声明的控件将从 IsStatic 属性中找到的代码示例内获取。用于包含这两个服务器控件的整个区域的代码应类似于下面的内容。
<asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <aspSample:ZipCodeWebPart ID="zip1" runat="server" Title="ZIP Code Provider" /> <aspSample:WeatherWebPart ID="weather1" runat="server" Title="ZIP Code Consumer" /> </ZoneTemplate> </asp:WebPartZone>
声明静态连接
现在网页应该已具有一个 <asp:webpartmanager> 元素,该元素是使用 Web 部件控件的页所必需的。添加一个 <staticconnections> 元素作为 <asp:webpartmanager> 元素的子元素,以包含一个或多个声明的静态连接。这些代码应类似于下面的示例。
<asp:WebPartManager ID="mgr" runat="server" > <StaticConnections> </StaticConnections> </asp:WebPartManager>
在 <staticconnections> 元素中,声明一个 <asp:webpartconnection> 元素。对于该连接,除 id 和 runat 属性外还必须指定下列必需的属性:
ConsumerID - 指示该连接中使用者控件的 ID。
ConsumerConnectionPointID - 指示使用者控件中用于建立该连接的特殊回调方法的 ID。只有当使用者控件有多个连接点时才需要此属性。有关连接点的详细信息,请参见 ConnectionPoint。
ProviderID - 指示该连接中提供方控件的 ID。
ProviderConnectionPointID - 指示提供方控件中用于建立该连接的特殊回调方法的 ID。只有当提供方控件有多个连接点时才需要此属性。
<asp:webpartmanager> 元素和子静态连接的完整代码应类似于下面的示例。
<asp:WebPartManager ID="mgr" runat="server" > <StaticConnections> <asp:WebPartConnection ID="conn1" ConsumerConnectionPointID="ZipCodeConsumer" ConsumerID="weather1" ProviderConnectionPointID="ZipCodeProvider" ProviderID="zip1" /> </StaticConnections> </asp:WebPartManager>