0

我在共享点中有这个 SPListItem.Folder,其中包含一个名为“资产 ID”的属性。

我的列表中有这些数据

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

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

4

3 回答 3

1

嗨,卡尔斯,我认为字段名称存在问题。U 在字段名称中包含空格

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

于 2012-02-24T10:29:17.707 回答
0

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

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

于 2014-10-07T17:01:17.483 回答
0

或使用其内部名称:

query.Query = "<OrderBy><FieldRef Name='Asset_x0020_ID' Ascending='FALSE'/></OrderBy>";

于 2013-12-06T00:44:21.387 回答