1

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

我注意到 sitecore 将每个 ID 存储为 GUID。我不想将此传递给客户端。有什么方法可以为sitecore中的每个项目设置数字ID,以便我可以将每个包与包详细信息相关联,并为每次点击等做jquery客户端显示隐藏?

谢谢。

4

1 回答 1

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 ...

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

$('#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();
于 2013-05-01T12:22:31.537 回答