Impostazione del programmaticamente la query caml sul membro di queryoverride di un WebPart personalizzato che eredita da ContentByQueryWebPart

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

Domanda

Il titolo è praticamente somme, cosa sto cercando. Ho creato un WebPart personalizzato in Visual Studio 2010, per una soluzione SharePoint 2010, che deriva dal contentByQueryWebPart. Lo scopo del WebPart è quello di mostrare agli utenti una panoramica dei propri compiti, presi da più liste di attività. Nessun problema finora.

Ma, ho sovrascritto il metodo OnINIT per ottenere alcuni dati dall'URL-query (utilizzando la pagina.request) per eseguire un filtro, raggruppamento e ordinamento personalizzato. Il problema è che il CQWP personalizzato non prenderà la stringa Caml che ho creato.

Ho già provato alcuni approcci, ma nessuno di loro sembrava funzionare. L'ho persino spogliato al minimo. Forse il punto in cui ho impostato il queryverride è sbagliato. (Oninit / onload / prima o dopo la base.on **** (e);?) Per ora, sembra questo:

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);
}
.

Spero che qualcuno abbia un'idea. Qualsiasi aiuto apprezzato. Se c'è ancora qualcosa di poco chiaro, per favore non esitate a chiedere.

Markus Schwalbe

Nota: l'inglese non è la mia prima lingua, quindi per favore scusami per ogni errore che ho fatto in questo post. :)

È stato utile?

Soluzione

Ho trovato una soluzione per farlo. Sembra che non abbia voluto il tag userid come valore.

Funziona come un fascino quando si utilizza il nome-attributo della corrente (o qualsiasi altro) oggetto spuser e modifica il tipo di valore su "Testo": (Inoltre, è possibile lasciare la query-tag via e il "può essere sostituito con", che sembra un po 'di pulitore)

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

Spero che questo aiuti qualcuno, che ha lo stesso problema. sinceramente,

Markus Schwalbe

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top