Problema de classificação SPQuery
-
12-11-2019 - |
Pergunta
Eu tenho esse SPListItem.Folder no sharepoint que contém uma propriedade chamada "Asset ID".
Eu tenho esses dados na minha lista
Asset ID | Name | Asset Type
1 | GamesFolder | Games
2 | AppsFolder | softwares
3 | MusicFolder | music
No meu código eu fiz isso
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();
Eu uso .Folder porque cada entrada na lista é um DocumentSet.O valor retornado é sempre “1”.Não sei o que há de errado por que minha classificação não funciona.
Por favor me ajude a resolver esse problema.Obrigado.
Solução
Olá Carls, acho que há um problema com o nome do campo.Você inclui espaço no nome do campo
Se você quiser evitar ter que procurar qual é o nome interno de um determinado campo, ao nomear sua coluna pela primeira vez, não inclua espaços ou caracteres especiais.Depois que o campo (coluna) for criado, volte e renomeie o campo para incluir espaços ou caracteres especiais conforme desejado.O SharePoint ainda manterá o nome do campo original sem espaços e você poderá usá-lo diretamente em sua consulta sem problemas.
Outras dicas
ou use seu internalName:
query.Query = "<OrderBy><FieldRef Name='Asset_x0020_ID' Acrescentando='FALSE'/></OrderBy>";
Um pouco tarde, mas se você estiver tendo problemas, poderá usar toda ou parte da seguinte essência:https://gist.github.com/trgraglia/4672176
E como afirma a resposta aceita, o nome do campo é o problema.Você precisa usar o nome estático do campo.O nome estático sempre permanecerá o mesmo.Mesmo se a coluna for renomeada.Portanto, você deve obter a coluna da coleção de colunas pelo nome de exibição e, em seguida, obter o nome estático das propriedades.