definindo programaticamente a consulta CAML no membro QueryOverride de uma WebPart personalizada que herda de ContentByQueryWebPart
-
12-11-2019 - |
Pergunta
O título resume muito bem o que estou procurando.Criei uma WebPart personalizada no Visual Studio 2010, para uma solução SharePoint 2010, que deriva de ContentByQueryWebPart.O objetivo da WebPart é mostrar aos usuários uma visão geral de suas próprias tarefas, extraídas de múltiplas listas de tarefas.Sem problemas até agora.
Porém, substituí o método OnInit para obter alguns dados da consulta de URL (usando Page.Request) para fazer alguma filtragem, agrupamento e classificação personalizados.O problema é que o CQWP personalizado não aceita a string CAML que criei.
Já tentei algumas abordagens, mas nenhuma delas parecia funcionar.Eu até reduzi ao mínimo.Talvez o local onde configurei o QueryOverride esteja errado.(OnInit / OnLoad / antes ou depois do base.On****(e);?) Por enquanto, fica assim:
protected override void OnInit(EventArgs e)
{
string query = "<Query><Where><Eq><FieldRef Name=\"AssignedTo\" /><Value Type=\"User\"><UserID /></Value></Eq></Where></Query>";
this.QueryOverride = query;
base.OnInit(e);
}
Espero que alguém tenha uma ideia.Qualquer ajuda será apreciada.Se ainda houver algo pouco claro, não hesite em perguntar.
Markus Schwalbe
Observação:Inglês não é minha primeira língua, então, desculpe-me por todos os erros que cometi neste post.:)
Solução
Eu encontrei uma solução para fazer isso.parece que não queria a tag UserID como valor.
Funciona perfeitamente quando você usa o atributo Name do objeto SPUser atual (ou qualquer outro) e altera o tipo do valor para "Texto":(Além disso, você pode deixar a tag Query de lado e o " pode ser substituído por ', que parece um pouco mais limpo)
this.QueryOverride = "<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Text'>" + SPContext.Current.Web.CurrentUser.Name + "</Value></Eq>";
Espero que isso ajude alguém que tenha o mesmo problema.sinceramente,
Markus Schwalbe