我在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”。我不知道为什么我的排序有什么问题 根本不起作用。
请帮我解决这个问题。谢谢。
答案 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
正如接受的答案所述,字段名称是问题。您需要使用该字段的静态名称。静态名称将始终保持不变。即使该列已重命名。因此,您应该通过显示名称从列集合中获取列,然后从属性中获取静态名称。