繁体   English   中英

动态SharePoint 2007 WebPart连接

[英]Dynamic SharePoint 2007 WebPart Connections

我正在制作在运行时动态连接Web部件的最佳方法的原型。 Essentailly,该应用程序将允许几个不同的应用程序组创建将在SharePoint前端使用的Web部件。 所有Web部件都需要自动检测使用者和提供者以在运行时创建连接。

我们想要做的是让Webpart发现并自动连接到其他兼容的Webpart。 当用户将两个兼容的部分添加到页面时,这些部分应该能够创建适当的连接。 我们有一个定义明确的接口,用于在零件之间传递数据,因此唯一的问题是如何管理连接。 明确地说,我们不希望用户担心必须自己创建连接。

就我们的目的而言,“最佳方式”是指最有效,最优雅和/或最标准的方式。 我们希望尽可能遵循既定的共享点设计模式,但是代码效率有些重要。

我已经能够起草一个概念证明,该概念证明使用基本的Web部件类在每个子类WebPart的oninit事件期间执行此操作。 oninit事件获取当前页面的SPWebPartManager,并通过每个部分进行迭代,从而为继承自基类的每个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部件,并且您可能会获得在某些情况下可以工作的功能。

但是在更复杂的情况下,您只是在自找麻烦,并且在限制高级用户的可能性。

  • 如果实现一个(或多个)Web部件,则可以使用并提供相同的界面。 然后将其中两个放在页面上=>无限循环
  • 如果您的用户在同一页面上放置了两个提供者和两个使用者,则无法按照用户的意愿将它们配对。
  • ...

我的建议是您开发Web部件,以便它们可以在有连接和无连接的情况下都可以工作(如果连接,则可以隐藏UI的一部分),并教您的用户使用连接

或者,您也可以中途在设计模式下显示Web部件时,以链接形式列出可以连接的Web部件,用户可以单击该链接来进行连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM