2012-02-24 109 views
0

我在sharepoint中有這個SPListItem.Folder,它包含一個名爲「資產ID」的屬性。SPQuery排序問題

我在我的名單

Asset ID |  Name  | Asset Type 
    1  | GamesFolder | Games 
    2  | AppsFolder | softwares 
    3  | MusicFolder | music 

有這個數據在我的代碼我這樣做

SPList objList = web.Lists["MyList"]; 
SPQuery query = new SPQuery(); 

query.Query = "<OrderBy><FieldRef Name='Asset ID' Ascending='FALSE'/></OrderBy>"; 
query.ViewAttributes = "Scope=\"Recursive\"";    
query.RowLimit = 1; 

SPListItemCollection items = objList.GetItems(query); 

return objList.Items[0].Folder.Properties["Asset ID"].ToString(); 

我使用.Folder,因爲列表中的每個條目是DocumentSet。 返回值始終爲「1」。我不知道爲什麼我的排序 根本不起作用。

請幫我解決這個問題。謝謝。

回答

1

嗨Carls我認爲有問題的字段名稱。 U包括字段名稱中的空格

如果您想避免必須查找特定字段的內部名稱,那麼在首次命名列時,請勿包含任何空格或特殊字符。一旦創建了字段(列),請返回並根據需要重命名該字段以包含空格或特殊字符。 SharePoint仍將保留原始字段名稱不含空格,並且您可以直接在查詢中使用該字段,而不會出現問題。

+0

嗨VbPatel,謝謝。 – 2012-02-28 10:29:27

+0

任何時間的兄弟 – 2012-02-28 13:31:49

0

,或者使用其INTERNALNAME:

query.Query = 「<排序依據> < FieldRef名稱= 'Asset_x0020_ID' 升序= 'FALSE'/ > < /排序依據>」;

0

晚了一點,但如果你有問題,你可以使用以下要點的全部或部分: https://gist.github.com/trgraglia/4672176

而作爲公認的答案州,字段名是問題。您需要使用該字段的靜態名稱。靜態名稱將始終保持不變。即使列已重命名。因此,您應該通過顯示名稱從列集合中獲取列,然後從屬性中獲取靜態名稱。