2011-03-07 126 views
3

我需要消耗由默认的SharePoint过滤的WebPart传递的值。我看不出自定义SharePoint站点如何建立连接并获取数据。这甚至有可能吗?可以在SharePoint Web部件连接到自定义SharePoint的WebPart

更新

提供者的WebPart是一个默认的SharePoint列表过滤器的WebPart。 消费者WebPart是一个自定义WebPart

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

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() 
     { 

     } 
    } 
} 

原因是这个方法 我的目标是不同的URL设置为基于我从SharePoint列表筛选器Web部件获取值的页面查看器Web部件。看起来SharePoint列表筛选器WebPart不能将数据发送到页面查看器WebPart。

+0

是消费者的WebPart一个SharePoint 2010 “视觉的WebPart”? – dotnetengineer 2012-03-30 20:05:31

回答

3

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

private IFilterValues _filterVals; 

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

注意,过滤器值的消费在页面生命周期的OnPreRender阶段发生,所以你需要重写OnRender方法作用于从连接消耗的任何值,或包括逻辑在消费者的方法。

欲了解更多信息,请查看以下链接:

http://msdn.microsoft.com/en-us/library/ms494838(v=office.12).aspx

http://msdn.microsoft.com/en-us/library/ms469765.aspx

+0

嗨凯尔,我更新了一些代码的问题,但WebPart上的“连接”属性仍然灰显。 – iJK 2011-03-07 22:36:22

+0

你在使用哪个列表筛选web部件?这是一个开箱即用的Web部件,还是您安装的东西? – 2011-03-07 22:49:02

+0

我相信这是开箱即用的Web部件。 – iJK 2011-03-07 23:17:55

1

在你应该叫base.CreateChildControls的的CreateChildControls();

下面是一些工作代码:


    List<IFilterValues> providers = new List<IFilterValues>();

protected override void CreateChildControls() { if (providers.Count > 0 && providers[0].ParameterValues != null) { this.FilterValue1 = providers[0].ParameterValues[0]; } base.CreateChildControls(); } [ConnectionConsumer("Provider WebPart", "IFilterValues", AllowsMultipleConnections = false)] public void SetConnectionInterface(IFilterValues provider) { if (provider != null) { this.providers.Add(provider); List<ConsumerParameter> parameters = new List<ConsumerParameter>(); parameters.Add(new ConsumerParameter("param1", ConsumerParameterCapabilities.SupportsSingleValue | ConsumerParameterCapabilities.SupportsEmptyValue | ConsumerParameterCapabilities.SupportsAllValue)); provider.SetConsumerParameters(new ReadOnlyCollection<ConsumerParameter>(parameters)); } }
相关问题