Configuración programáticamente de la consulta de CAML en el miembro de QueryOverride de un WebPart personalizado que hereda desde ContentByqueryWebPart

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

Pregunta

El título casi resume, lo que estoy buscando. Creé un webpart personalizado en Visual Studio 2010, para una solución de SharePoint 2010, que se deriva del contbyByqueryWebPart. El propósito de la página web es mostrar a los usuarios una descripción general de sus propias tareas, tomadas de múltiples listas de tareas. No hay problemas hasta ahora.

Pero, he anulado el método ONINIT para obtener algunos datos de la consulta de URL (usando la página.Request) para realizar un filtrado personalizado, agrupación y clasificación. El problema es que el CQWP personalizado no tomará la cadena de CAML que creé.

Ya probé algunos enfoques, pero ninguno de ellos parecía funcionar. Incluso lo despojé hasta el mínimo. Tal vez el lugar donde establezco el QueryOverride está mal. (Oninit / Onload / ANTES O DESPUÉS DE LA BASE.ON **** (E);?) Por ahora, se ve así:

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 alguien tenga una idea. Cualquier ayuda apreciada. Si todavía hay algo poco claro, no dude en preguntar.

markus schwalbe

Nota: el inglés no es mi primer idioma, así que por favor, disculpe por cada error que he hecho en este post. :)

¿Fue útil?

Solución

Encontré una solución para hacer esto. Parece que no quería la etiqueta de usuario como valor.

Funciona como un encanto cuando usa el atributo Nombre del objeto de espirador actual (o cualquier otro) y cambie el tipo de valor al "texto": (Además, puede dejar la etiqueta de consulta y la "Puede ser reemplazada por", que se ve un poco más limpia)

this.QueryOverride = "<Where><Eq><FieldRef Name='AssignedTo' /><Value Type='Text'>" + SPContext.Current.Web.CurrentUser.Name + "</Value></Eq>";

Espero que esto ayude a cualquiera, que tiene el mismo problema. sinceramente,

markus schwalbe

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top