Sitecore项目关系

时间:2013-05-01 11:11:18

标签: jquery sitecore sitecore6

我对sitecore很陌生。我正在构建一个假日计划页面,其中每个计划都有不同的包,每个包都有与包相关的属性。该表显示了包列表及其属性。单击包列时,详细的html表显示包含详细信息和图片在同一页面上。

我注意到sitecore将每个ID存储为GUID。我不想将此传递给客户端。有没有办法我们可以为sitecore中的每个项目都有数字ID,这样我就可以将每个包与包详细信息联系起来,并为每次点击等进行jquery客户端show hide?

感谢。

1 个答案:

答案 0 :(得分:1)

如果我们可以假设包是假日计划的子项,那么您可以将包列表的数据源设置为:

Sitecore.Context.Item.Children

然后创建指向每个包项详细信息的链接,您可以执行以下操作:

// ... in the itemdatabound event of the listview / repeater etc etc ...

var link = (Hyperlink)e.Item.FindControl("MyHyperlinkControl");
var currentItem = (Item)e.Item.DataItem;

link.NavigateUrl = LinkManager.GetItemUrl(currentItem);

// ... all the other binding related activity ...

我认为在via Jquery中加载此内容的典型方法是使用load()方法使用超链接的url,并在目标页面上指定一个锚点:

$('#result').load('holidays/package1 #PackageDetailsContainer');

http://api.jquery.com/load/

但是,如果您确实想要按键选择项目,可以使用linq按任何属性或字段过滤Sitecore项目。 例如:

var selectedPackageKey = Request.QueryString["packageKey"];

var parentFolderId = "{xxxx.xxxxxxx.xxxxxxxx.xxxxxxxxx}";
var parentFolderItem = Sitecore.Context.Database.GetItem(parentFolderId);

var selectItem = parentFolderItem.Children.
                                  Where(i => i["Key field"] == selectedPackageKey).
                                  FirstOrDefault();