我正在构建运行时动态连接Web部件的最佳方法原型。 Essentailly,该应用程序将允许多个不同的应用程序组创建将在SharePoint前端使用的Web部件。所有的Web部件都需要自动检测使用者和提供者在运行时创建连接。动态SharePoint 2007 WebPart连接
我们要做的是让webparts发现并自动连接到其他兼容的webparts。当用户将两个兼容的部件添加到页面时,这些部件应该能够创建适当的连接。我们有一个定义良好的界面用于在部件之间传递数据,所以唯一的问题是如何管理连接。要清楚,我们不希望用户担心必须自己创建连接。
对于我们的目的而言,“最佳方式”意味着最高效,优雅和/或标准。我们希望尽可能遵循已建立的共享点设计模式,但代码效率有点重要。
我已经能够在每个subclassed webpart的oninit事件中使用基础Web部件类来完成概念验证。该事件OnInit的抓取当前页面的SPWebPartManager并通过各部分itereates每一个web部件从基类继承创建消费者和供应商连接:
SPWebPartManager spManager = SPWebPartManager.GetCurrentWebPartManager(Page) as SPWebPartManager;
foreach (BaseWebPart provider in parts)
{
foreach (BaseWebPart consumer in parts)
{
if (provider != consumer)
{
string connectionId = string.Format("WebPartConnection{0}{1}", consumer.ID, provider.ID);
SPWebPartConnection conn = spManager.SPWebPartConnections[connectionId];
if (conn == null)
{
conn = new SPWebPartConnection()
{
ID = connectionId,
ConsumerID = consumer.ID,
ConsumerConnectionPointID = "WebPartConnectableConsumer",
ProviderID = provider.ID,
ProviderConnectionPointID = "WebPartConnectableProvider"
};
spManager.SPWebPartConnections.Add(conn);
}
}
}
}
谢谢,这就是我问的原因!我有一些同样的想法,并对整体共识感到好奇。在设计模式中显示潜在的Web部件连接作为链接的建议很有趣。你能指出我的方向吗? – etc 2010-06-22 10:38:55