컨텐츠 검색 웹 파트의 컨트롤 디스플레이 템플릿에 매개 변수를 전달하는 방법은 무엇입니까?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/67619

문제

SharePoint 2013 사용 다음 디스플레이 템플릿을 사용하여 5 개의 뉴스 기사를 표시하는 데 사용하는 콘텐츠 검색 웹 파트가 있습니다.

  • 제어 : 목록
  • 항목 : 왼쪽에 그림, 오른쪽 3 줄

    이는 괜찮습니다.

    내가 포함하고 싶은 것은 사용자가 모든 뉴스 기사를 표시하는 "뉴스 아카이브"페이지로 사용자를 데려 오는 5 개의 뉴스 기사가 링크입니다.

    ootb control_list.js 디스플레이 템플리트를 기반으로 사용자 정의 컨트롤 디스플레이 템플리트를 만드는 것을 생각하고 있습니다.나는 디스플레이 템플릿에서 뉴스 아카이브에 대한 뉴스 아카이브에 대한 링크를 열 수 있었다고 가정하지만 재사용 할 수 있도록하고 싶습니다.컨트롤 디스플레이 템플릿에 데이터를 동적으로 전달할 수있는 방법이 있습니까?

    어떻게 접근하는 방법에 대한 다른 제안이 있습니까?

도움이 되었습니까?

해결책

ContentBySearchWebPart를 상속하고 onload 이벤트를 오버로드해야합니다.

protected override void OnLoad(EventArgs e)
{
    if (this.AppManager != null)
    {
        if (this.AppManager.QueryGroups.ContainsKey(this.QueryGroupName) &&
            this.AppManager.QueryGroups[this.QueryGroupName].DataProvider != null)
        {
            this.AppManager.QueryGroups[this.QueryGroupName].DataProvider.BeforeSerializeToClient +=
                new BeforeSerializeToClientEventHandler(EnhanceQuery);

         }
     }

     base.OnLoad(e);
}


protected virtual void EnhanceQuery(object sender, BeforeSerializeToClientEventArgs e)
{
    DataProviderScriptWebPart dataProvider = sender as DataProviderScriptWebPart;
    dataProvider.Properties.Add("MyProperty", this.MyProperty);
}
.

이제 디스플레이 템플리트 HTML 에서이 속성을 가져올 수 있습니다.

<!--#_
    var myValue = ctx.DataProvider.get_properties()["MyProperty"];
_#-->
<div>_#= myValue =#_</div>
.

다른 팁

이 모든 것을 위해 디스플레이 템플릿이 필요한지 궁금합니다!CSWP에서 5 가지 결과의 한계를두고 콘텐츠 편집기 웹 파트를 추가 할 수 있습니다 (CSWP 후) 페이지 끝을 새 페이지로 안내합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top