컨텐츠 검색 웹 파트의 컨트롤 디스플레이 템플릿에 매개 변수를 전달하는 방법은 무엇입니까?
-
10-12-2019 - |
문제
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 후) 페이지 끝을 새 페이지로 안내합니다.
제휴하지 않습니다 sharepoint.stackexchange