Sharepoint 2010 SharePoint Web部件能否连接到自定义SharePoint Web部件

Sharepoint 2010 SharePoint Web部件能否连接到自定义SharePoint Web部件,sharepoint-2010,Sharepoint 2010,我需要使用默认sharepoint筛选器Web部件传递的值。我不知道自定义sharepoint Web部件如何建立连接并获取数据。这可能吗 已更新 提供程序Web部件是默认的SharePoint列表筛选器Web部件。 消费者Web部件是自定义Web部件 这是我提出的代码,但是SharePoint页面上的“连接”选项仍然是灰色的。在页面上,我有一个SharePoint列表筛选器Web部件和我的CustomPageViewer Web部件 namespace PageViewerWithConnec

我需要使用默认sharepoint筛选器Web部件传递的值。我不知道自定义sharepoint Web部件如何建立连接并获取数据。这可能吗

已更新

提供程序Web部件是默认的SharePoint列表筛选器Web部件。 消费者Web部件是自定义Web部件

这是我提出的代码,但是SharePoint页面上的“连接”选项仍然是灰色的。在页面上,我有一个SharePoint列表筛选器Web部件和我的CustomPageViewer Web部件

namespace PageViewerWithConnections.CustomPageViewer
{
    [ToolboxItemAttribute(false)]
    public class CustomPageViewer : System.Web.UI.WebControls.WebParts.WebPart
    {
        IFilterValues _filterVals;

        [ConnectionConsumer("Consumer connection", "Consumer param")]
        public void ConsumeFilter(IFilterValues filterValues)
        {
            _filterVals = filterValues;
        }

        Microsoft.SharePoint.WebPartPages.PageViewerWebPart objPageViewer;
        protected override void CreateChildControls()
        {

        }
    }
}
这种方法的原因
我的目标是根据从SharePoint列表过滤器Web部件获得的值,为页面查看器Web部件设置不同的URL。SharePoint列表筛选器Web部件似乎无法将数据发送到页面查看器Web部件。

您需要在自定义Web部件上创建一个使用者方法,该方法将
IFilterValues的实例作为参数,并使用
ConnectionConsumerAttribute
属性

namespace PageViewerWithConnections.CustomPageViewer
{
    [ToolboxItemAttribute(false)]
    public class CustomPageViewer : System.Web.UI.WebControls.WebParts.WebPart
    {
        IFilterValues _filterVals;

        [ConnectionConsumer("Consumer connection", "Consumer param")]
        public void ConsumeFilter(IFilterValues filterValues)
        {
            _filterVals = filterValues;
        }

        Microsoft.SharePoint.WebPartPages.PageViewerWebPart objPageViewer;
        protected override void CreateChildControls()
        {

        }
    }
}
private IFilterValues _filterVals;

[ConnectionConsumer("Filter Consumer", "FilterConsumer")]
public void ConsumeFilter(IFilterValues filterValues)
{
    _filterVals = filterValues;
}
请注意,筛选器值的使用发生在页面生命周期的
OnPreRender
阶段,因此您需要重写
OnRender
方法以对连接中使用的任何值进行操作,或者在consumer方法中包含逻辑

有关更多信息,请查看以下链接:


在CreateChildControls中,您应该调用base.CreateChildControls()

以下是一些工作代码:


列表提供程序=新列表()

受保护的覆盖无效CreateChildControls() { if(providers.Count>0&&providers[0]。参数值!=null) { this.FilterValue1=提供程序[0]。参数值[0]; } base.CreateChildControls(); } [ConnectionConsumer(“提供程序Web部件”、“IFilterValue”、AllowsMultipleConnections=false)] public void SetConnectionInterface(IFilterValues提供程序) { if(提供程序!=null) { this.providers.Add(provider); 列表参数=新列表(); 添加(新的使用者参数(“参数1”), ConsumerParameterCapabilities.SupportsSingleValue | ConsumerParameterCapabilities.SupportsEmptyValue | ConsumerParameterCapabilities.SupportsAllValue)); SetConsumerParameters(新的只读集合(参数)); } }
Hi Kyle,我用一些代码更新了问题,但web部件上的“connections”属性仍然变灰。您使用的是哪个列表筛选器web部件?这是一个开箱即用的web部件,还是您安装的东西?我相信它是开箱即用的web部件。消费者web部件是SharePoint 2010“可视web部件”吗?