SPQuery проблема сортировки

У меня есть этот SPListItem.Folder в sharepoint, который содержит свойство с именем "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". Я не знаю, что случилось, почему моя сортировка не работает вообще.

Пожалуйста, помогите мне решить эту проблему. Благодарю.

3 ответа

Решение

Привет, Карлс. Я думаю, что есть проблема для названия поля. U включить пробел в имя поля

Если вы хотите избежать необходимости искать, каково внутреннее имя определенного поля, при первом названии столбца не включайте пробелы или специальные символы. Как только поле (столбец) будет создано, вернитесь назад и переименуйте поле, чтобы включить пробелы или специальные символы по желанию. SharePoint по-прежнему сохранит исходное имя поля без пробелов, и вы можете использовать его непосредственно в своем запросе без проблем.

Или используйте свое внутреннее имя:

query.Query = "";

Немного поздно, но если у вас возникли проблемы, вы можете использовать все или часть следующего содержания: https://gist.github.com/trgraglia/4672176

И, как говорится в принятом ответе, имя поля является проблемой. Вам нужно использовать статическое имя поля. Статическое имя всегда останется прежним. Даже если столбец переименован. Таким образом, вы должны получить столбец из коллекции столбцов по отображаемому имени, а затем получить статическое имя из свойств.

Другие вопросы по тегам