SPQuery排序问题

时间:2012-02-24 09:30:41

标签: visual-studio-2010 sharepoint-2010 spquery document-set

我在sharepoint中有一个包含名为“Asset ID”的属性的SPListItem.Folder。

我的列表中有这些数据

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”。我不知道为什么我的排序有什么问题  根本不起作用。

请帮我解决这个问题。谢谢。

3 个答案:

答案 0 :(得分:1)

嗨Carls我认为字段名称存在问题。 U在字段名称中包含空格

如果您想避免必须查找特定字段的内部名称,请在第一次命名列时,不要包含任何空格或特殊字符。创建字段(列)后,返回并重命名该字段以根据需要包含空格或特殊字符。 SharePoint仍将保留原始字段名称而不留空格,您可以直接在查询中使用它而不会出现问题。

答案 1 :(得分:0)

或使用其internalName:

query.Query =“&lt; OrderBy&gt;&lt; FieldRef Name ='Asset_x0020_ID'Ascending ='FALSE'/&gt;&lt; / OrderBy&gt;”;

答案 2 :(得分:0)

有点晚但如果您遇到问题,您可以使用以下全部或部分内容: https://gist.github.com/trgraglia/4672176

正如接受的答案所述,字段名称是问题。您需要使用该字段的静态名称。静态名称将始终保持不变。即使该列已重命名。因此,您应该通过显示名称从列集合中获取列,然后从属性中获取静态名称。