Building Web Parts for SPS读书笔记(3)-Connectable Web Parts

我与影子孤独终老i 提交于 2020-03-06 00:53:24

Building Web Parts for SPS读书笔记(3)-Connectable Web Parts

 

 

本篇学习如何创建Connectable Web PartsPart 1简单介绍了Web Part包含的相关文件及其开发部署等,Part 2介绍如何使用ASP.NETUser Controls来创建Web Part的外观,简化Web Parts的开发和测试。

 

1. 连接 Web 部件(Connectable Web Parts

Web 部件基础结构为 Web 部件之间的通信提供了强大的支持。开发人员可以使用标准接口来创建可互相交换信息的 Web 部件。例如,用来实现 ICellConsumer 接口的 Web 部件可以从用来实现 ICellProvider 接口的 Web 部件接收信息。用户可以使用浏览器中的简单菜单命令将Web 部件互相连接。

 

另外,Web 部件基础结构还提供了转换器,从而允许接口不完全互补的 Web 部件互相通信。Web 部件基础结构可自动检测接口不匹配的情况并显示一个对话框,该对话框允许用户将一个接口的值映射到另一个接口。例如,如果用户将用来实现 IRowProvider 接口的 Web 部件连接到用来实现 ICellConsumer 接口的 Web 部件,就会显示一个对话框,允许用户从IRowProvider Web 部件中选择要发送到 ICellConsumer Web 部件的单列数据。

 

2. 实现ICellProviderICellConsumer接口

Web Parts之间的连接由用户在运行时实时创建,Web Part连接基础结构通过针对页面上每个已连接的Web Part调用WebPart基类的标准方法来解决Web Parts之间的通信。要参与Web Parts之间的通信,Web Parts必须重载这些基类的方法。

在浏览器中,可以使用四对接口来连接 Web 部件:

ICellProvider/ICellConsumer 此接口对可与单个单元格中的数据进行通信。通过使用转换器,ICellConsumer 还可以与 IRowProvider 进行连接。

IRowProvider/IRowConsumer 此接口对可与一行数据进行通信。通过使用转换器,IRowProvider 可以与 ICellConsumer IFilterConsumer 进行连接。

IListProvider/IListConsumer 此接口对可与整个数据列表进行通信。

IFilterProvider/IFilterConsumer 此接口对可与包含一对或多对列名和值的筛选器表达式进行通信。IFilterConsumer 可以使用转换器与 IRowProvider 进行连接,但是这种类型的连接只能处理一对列名/值。换言之,如果您使用转换器连接到 IRowProvider,则只能针对单列进行筛选。

 

可连接的 Web  Parts必须实现前面描述的其中一个标准连接接口。Web 部件只能与其他可实现补充其自身的接口的 Web Parts进行通信,尽管基础结构能够提供可充当某些接口之间适配器的转换器。例如,使用一个转换器将 IRowProvider Web Part连接到 ICellConsumer Web Part。在与 IRowProvider 通信时,该转换器充当 IRowConsumer,在与 ICellConsumer 通信时,该转换器充当 ICellProvider

 

这里以实现ICellProviderICellConsumer接口为例,演示Connectable Web Parts的开发过程。

(1)实现ICellProvider Interface

实现ICellProvider接口,3个成员将加到class中:2 events1 event-handler,如下所示:

// Event required by ICellProvider

public event CellProviderInitEventHandler CellProviderInit;      

// Event required by ICellProvider

public event CellReadyEventHandler CellReady;              

 

/// <summary>

/// The CellConsumerInit event handler

/// The Consumer part will fire this event during its PartCommunicationInit phase.

/// </summary>

/// <param name="sender">Consumer Web Part</param>

/// <param name="cellConsumerInitArgs">The args passed by the Consumer</param>

public void CellConsumerInit(object sender, CellConsumerInitEventArgs cellConsumerInitArgs)

{

          // This is where the Provider part can identify what type of "Cell" the Consumer was expecting/requesting.

}

 

(2)实现ICellConsumer接口

实现ICellConsumer接口,也有3个成员添加到class中:1 event2 event-handlers,如下所示:

// Event required by ICellConsumer

public event CellConsumerInitEventHandler CellConsumerInit;

 

/// <summary>

/// The CellProviderInit event handler

/// The Provider part will fire this event during its PartCommunicationInit phase.

/// </summary>

/// <param name="sender">Provider Web Part</param>

/// <param name="cellProviderInitArgs">The args passed by the Provider</param>

public void CellProviderInit(object sender, CellProviderInitEventArgs cellProviderInitArgs)

{

}

 

/// <summary>

/// The CellReady event handler

/// The Provider part will fire this event during its PartCommunicationMain phase.

/// </summary>

/// <param name="sender">Provider Web Part</param>

/// <param name="cellReadyArgs">The args passed by the Provider</param>

public void CellReady(object sender, CellReadyEventArgs cellReadyArgs)

{

}

 

(3)重载基类的方法

要参与Web Parts之间的通信,仅仅实现ICellProviderICellConsumer接口是不够了,WebPart基类有5个方法需要重载。

EnsureInterfaces()

CanRunAt()

PartCommunicationConnect()

PartCommunicationInit()

PartCommunicationMain()

 

 

 

Patrick Tisseghem总结的下图非常形象描述Provider Web PartConsumer Web PartSharePoint之间的关联,及其需要重载的Web Part基类方法和Event-Handler

 

To be continued.

 

References:

1. Patrick Tisseghem, Building Web Parts for Microsoft SharePoint Products and Technologies, Part III - Connectable Web Parts, http://www.microsoft.com/belux/nl/msdn/community/columns/tisseghem/webparts3.mspx

2. Patrick Tisseghem, Building Web Parts for Microsoft SharePoint Products and Technologies

3. Andy Baron, 面向开发人员的 Web 部件介绍, http://www.microsoft.com/china/MSDN/library/Office/sharepoint/SP_northwindwebparts.mspx

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!