C# 动态SharePoint 2007 Web部件连接
我正在设计运行时动态连接web部件的最佳方法。本质上,该应用程序将允许多个不同的应用程序组创建将在SharePoint前端中使用的web部件。所有web部件都需要自动检测使用者和提供者,以便在运行时创建连接 我们希望做的是让Web部件发现并自动连接到其他兼容的Web部件。当用户将两个兼容的部分添加到页面时,这些部分应该能够创建适当的连接。我们有一个定义良好的接口,用于在部件之间传递数据,因此唯一的问题是如何管理连接。明确地说,我们不希望用户担心必须自己创建连接 就我们而言,“最佳方式”是指最高效、最优雅和/或最标准的方式。我们希望尽可能遵循已建立的sharepoint设计模式,但代码效率有些重要 我已经能够起草一个概念证明,在每个子类webpart的oninit事件期间使用一个基本web部件类来完成这项工作。oninit事件获取当前页面的SPWebPartManager,并通过每个部件创建,为继承自基类的每个Web部件创建使用者和提供者连接:C# 动态SharePoint 2007 Web部件连接,c#,sharepoint,sharepoint-2007,web-parts,wss-3.0,C#,Sharepoint,Sharepoint 2007,Web Parts,Wss 3.0,我正在设计运行时动态连接web部件的最佳方法。本质上,该应用程序将允许多个不同的应用程序组创建将在SharePoint前端中使用的web部件。所有web部件都需要自动检测使用者和提供者,以便在运行时创建连接 我们希望做的是让Web部件发现并自动连接到其他兼容的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部件,而且您可能会在有限的场景中使用您的功能 但在更复杂的情况下,你只是自找麻烦,你限制了Advanced用户的可能性
- 如果您实现了一个(或多个)web部件,它可以使用并提供相同的接口。然后将其中两个放在一个page=>无限循环中
- 如果您的用户将两个提供者和两个使用者放在同一页面上,则您无法根据用户的需要将它们配对
或者你可以半途而废,在设计模式下显示你的web部件时,列出它可以连接到的web部件作为链接,用户可以点击链接。我强烈建议你重新考虑,然后放弃这个想法。 我知道可能很难教所有用户连接web部件,而且您可能会在有限的场景中使用您的功能 但在更复杂的情况下,你只是自找麻烦,你限制了Advanced用户的可能性
- 如果您实现了一个(或多个)web部件,它可以使用并提供相同的接口。然后将其中两个放在一个page=>无限循环中
- 如果您的用户将两个提供者和两个使用者放在同一页面上,则您无法根据用户的需要将它们配对
或者你可以半途而废,在设计模式下显示你的web部件时,列出它可以连接到的web部件作为链接,用户可以单击这些链接进行连接。谢谢,这就是我问的原因!我有一些相同的想法,对总体共识感到好奇。在设计模式中将潜在的Web部件连接显示为链接的建议很有趣。你能给我举个例子吗?谢谢,这就是我为什么要问的原因!我有一些相同的想法,对总体共识感到好奇。在设计模式中将潜在的Web部件连接显示为链接的建议很有趣。你能给我举个例子吗?