2011-03-07 7 views
3

기본 셰어 포인트 필터 webpart에서 전달 된 값을 사용해야합니다. 사용자 지정 셰어 포인트 웹 파트가 연결을 설정하고 데이터를 가져 오는 방법을 알 수 없습니다. 이것은 가능한가?SharePoint WebPart가 사용자 지정 SharePoint WebPart에 연결할 수 있습니까

업데이트

프로 바이더는 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() 
     { 

     } 
    } 
} 

이유는 내 목표는 내가 SharePoint 목록 필터 웹 파트에서 얻을 값에 따라 페이지 뷰어 웹 파트에 다른 URL을 설정하는 것입니다이 접근 방식입니다. SharePoint List Filter WebPart가 Page Viewer WebPart로 데이터를 보낼 수없는 것 같습니다.

+0

소비자는 SharePoint 2010의 "비주얼는 WebPart을"는 WebPart가 : 여기

몇 가지 작업 코드? – dotnetengineer

답변

3

IFilterValues의 인스턴스를 인수로 취하고 ConnectionConsumerAttribute 특성을 사용하는 사용자 지정 웹 파트에 소비자 메서드를 만들어야합니다. 당신은 연결에서 소비되는 모든 값에 따라 행동 할 수있는 OnRender 메소드를 오버라이드 (override) 할 필요가, 또는 로직을 포함 할 수 있습니다 있도록 필터 값의 소비는 페이지 수명주기의 OnPreRender 단계에서 발생하는

private IFilterValues _filterVals; 

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

주 소비자 방법. 자세한 내용은

,이 링크를 체크 아웃 : (당신이 base.CreateChildControls를 호출해야을 CreateChildControls에서

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

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

+0

안녕하세요 카일, 일부 코드로 질문을 업데이트했지만 WebPart의 "연결"속성은 여전히 ​​회색으로 표시됩니다. – iJK

+0

어떤 필터 웹 파트를 사용하고 있습니까? 이 상자 웹 파트 또는 설치 한 것입니까? –

+0

나는 그것이 상자 웹 파트에서 벗어난 것이라고 믿습니다. – iJK

1

);


    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)); } }
관련 문제