我对sitecore很陌生。我正在构建一个假日计划页面,其中每个计划都有不同的包,每个包都有与包相关的属性。该表显示了包列表及其属性。单击包列时,详细的html表显示包含详细信息和图片在同一页面上。
我注意到sitecore将每个ID存储为GUID。我不想将此传递给客户端。有没有办法我们可以为sitecore中的每个项目都有数字ID,这样我就可以将每个包与包详细信息联系起来,并为每次点击等进行jquery客户端show hide? p>
感谢。
答案 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');
但是,如果您确实想要按键选择项目,可以使用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();