2013-05-01 91 views
1

我对sitecore很陌生。我正在构建一个假日计划页面,其中每个计划都有不同的包,每个包都有与包相关的属性。该表显示了软件包列表以及它的属性。当点击包列时,详细的html表格显示包装细节和图片在同一页面上。Sitecore项目关系

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

谢谢。

回答

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();