definindo programaticamente a consulta CAML no membro QueryOverride de uma WebPart personalizada que herda de ContentByQueryWebPart

StackOverflow https://stackoverflow.com/questions/5457223

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.:)

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top