我最近一直在玩SPEAK对话。到目前为止,我喜欢它,但偶然发现了一个问题。我在url参数中传递了一个itemID,我想在listcontrol中显示这个项目的子项。
我的方法是创建一个SearchDataSource并通过javascript设置字段“rootItemId”。这似乎不起作用。有没有办法在PageCode中访问SearchDataSource的rootItemId?
答案 0 :(得分:3)
我最近使用的另一种方法是在这里使用Anders Laub的JSON数据源控件。 http://laubplusco.net/creating-simple-sitecore-speak-json-datasource/
然后,您可以从JavaScript PageCode执行Ajax调用并附加JSON结果项以填充listcontrol,其中listcontrols绑定到JSON数据源Json属性。
$.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 :(得分:1)
我设法用查询来做到这一点。在pageCode中:
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}');
}
}
}