Définition programmatique de la quête CAML sur le membre de QueryOverride d'un WebPart personnalisé qui hérite de ContentByQueryWebPart

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

Question

Le titre résume à peu près, ce que je recherche. J'ai créé un WebPart personnalisé dans Visual Studio 2010, pour une solution SharePoint 2010, qui dérive du contenuByQueryWebPart. Le but du WebPart est de montrer aux utilisateurs un aperçu de leurs propres tâches, tirés de plusieurs listes de tâches. Aucun problème jusqu'à présent.

Mais, j'ai remplacé la méthode Oninit afin d'obtenir les données de l'URL-Queery (en utilisant Page.Request) pour effectuer un filtrage, un regroupement et un tri personnalisés. Le problème est que le CQWP personnalisé ne prendra pas la chaîne CAML que j'ai créée.

J'ai déjà essayé certaines approches, mais aucun d'eux ne semblait fonctionner. Je l'ai même dépouillé au minimum. Peut-être que l'endroit où j'ai réglé le requête Override est faux. (OnInit / onload / avant ou après la base.on **** (e);?) Pour l'instant, cela ressemble à ceci:

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

J'espère que quelqu'un a une idée. Toute aide appréciée. S'il y a encore quelque chose de clair, n'hésitez pas à demander.

Markus Schwalbe

Remarque: l'anglais n'est pas ma première langue, alors veuillez m'excuser pour chaque erreur que j'ai faite dans ce post. :)

Était-ce utile?

La solution

J'ai trouvé une solution pour le faire. On dirait que cela ne voulait pas que l'utilisateur-tag comme valeur.

Cela fonctionne comme un charme lorsque vous utilisez l'attribution de nom de l'objectif Spuser-Object actuel (ou tout autre) et modifiez le type de valeur en "texte": (vous pouvez également laisser le plafond de requête et le "peut être remplacé par ', qui a l'air un peu plus propre)

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

J'espère que cela aide n'importe qui, qui a le même problème. sincèrement,

Markus Schwalbe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top