2013-05-01 119 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();