2014-11-24 3 views
1

나는 최근에 SPEAK 대화 상자로 게임을 해왔습니다. 지금까지 나는 그것을 좋아하지만, 문제를 우연히 발견했습니다. url 매개 변수에 itemID를 전달했으며 listcontrol에이 항목의 하위 항목을 표시하려고합니다.Sitecore SPEAK - searchdatasource root를 프로그래밍 방식으로 설정하십시오.

내 접근 방식은 SearchDataSource를 만들고 javascript를 통해 "rootItemId"필드를 설정하는 것이 었습니다. 이것은 효과가없는 것 같습니다. PageCode에서 SearchDataSource의 rootItemId에 액세스하는 방법이 있습니까?

답변

3

요즘 사용하고있는 또 다른 방법은 Anders Laub의 JSON 데이터 소스 컨트롤을 사용하는 것입니다. http://laubplusco.net/creating-simple-sitecore-speak-json-datasource/.

JavaScript 페이지 코드에서부터 Ajax 호출을 수행하고 JSON 결과 항목을 추가하여 listcontrol이 JSON 데이터 소스 Json 속성에 바인딩 된 listcontrol을 채울 수 있습니다.

$.ajax({ 
       url: "/api/sitecore/RolePermissions/GetAllRoles", 
       type: "POST", 
       context: this, 
       success: function (data) { 
        var json = jQuery.parseJSON(data); 

        for (var i = 0; i < json.length; i++) { 
         var obj = json[i]; 
         this.JsonDS.add(obj); 
        } 
       } 
      }); 
1

나는 이것을 쿼리로 처리했다. 페이지 코드 :

public class SelectTitle : PageCodeBase 
    { 
     //Fetches DataSource as rendering 
     public Rendering DataSource { get; set; } 

     public override void Initialize() 
     { 
      var articleid = WebUtil.GetQueryString("article"); 

      if (!String.IsNullOrEmpty(articleid)) 
      { 
       //Set the query. 
       this.DataSource.Parameters["query"] = 
        String.Format("fast:/some/path/*[@@id = '{0}']/Elements/*[@@templateid = '{1}']", articleid, '{guid}'); 
      } 
     } 
    }