之前做过很多类似的例子,只是很少去总结,今天任务比较少,趁着没事,就整理了下:
与ASP.NET应用程序一样,在我们的Sharepoint站点页面上,控件与控件(即Web Part与Web Part)之间经常需要进行数据的交互。但是,在一个Sharepoint站点中,每一个Web Part都不能假设和它通信的另外一个Web Part 也在同一个页面上,因此我们在开发Web Part的时候,就不能hard code 去直接访问另外一个WP。
那么我们如何去解决这个问题呢,下面就是我要谈到的如何进行WP之间的通信
MOSS提供了一种专门的机制Web Part Connection,用于在WP之间传递数据:
SharePoint将要进行数据传递的Web Part分为俩类:
Provider Webpart: 提供数据
Consumer Webpart: 接收数据
Web Part Connection 机制提供了一种松耦合的数据连接机制。Provider WP 和 Consumer WP都只用关心自己的实现即可,而不必关心数据的接收或提供者是谁,怎么去使用。
在部署之后,我们的页面上放置了Provider WP and Consumer WP, 这时候SharePoint机制会自动检测页面上所有Web Part 的类型,用数据通道把这俩种Web Part挂接起来,。如果发现某个Provider WP 所提供的数据正好可以被另外一个Consumer WP使用,那么管理员就可以在页面上直接将它们俩个连接起来。一个Provider WP 可被多个Consumer WP使用。通过数据通道,这样也就实现了Provider 和Consumer 之间的数据传递 。
上面简单介绍了SharePoint提供的用于Web Part之间通信的机制,我们可以用此标准的方式去进行Web Part Connection开发,但是这种方式也有它不灵活的地方。
其实我们可以直接用代码来得到页面上另外那个WebPart的实例对象,然后通过获得此WebPart对象属性的值,来获得所需信息的。 SharePoint的Object Model其实提供了很完整的方法,让我们的代码可以直接获取任何页面上的所有WebPart的信息。
当然我们还可以用QuickPart, 开发UserControl的方式来实现Web Part之间数据传递.