Comment passer des paramètres dans le modèle d'affichage de contrôle d'une partie Web de recherche de contenu?
-
10-12-2019 - |
Question
Utiliser SharePoint 2013, j'ai une partie de recherche de contenu que j'utilise pour afficher 5 articles de presse à l'aide des modèles d'affichage suivants:
- Contrôle: Liste
- Item: image à gauche, 3 lignes à droite
Et cela fonctionne juste bien.
Ce que j'aimerais inclure est un lien après les 5 articles de presse qui prendront l'utilisateur à une page "Archives de nouvelles" où il affiche tous les articles de presse.
Je pense créer un modèle d'affichage de contrôle personnalisé basé sur le modèle d'affichage Ootb Control_List.js.Je suppose que je pourrais durer duper le lien vers l'archive des nouvelles du modèle d'affichage, mais je voudrais le rendre réutilisable.Y a-t-il une façon de passer de manière dynamique des données sur le modèle d'affichage de contrôle?
Toute autre suggestion sur la façon d'approcher cela?
La solution
Vous devez hériter de contentbysearchwebPart et surcharger l'événement surload:
protected override void OnLoad(EventArgs e)
{
if (this.AppManager != null)
{
if (this.AppManager.QueryGroups.ContainsKey(this.QueryGroupName) &&
this.AppManager.QueryGroups[this.QueryGroupName].DataProvider != null)
{
this.AppManager.QueryGroups[this.QueryGroupName].DataProvider.BeforeSerializeToClient +=
new BeforeSerializeToClientEventHandler(EnhanceQuery);
}
}
base.OnLoad(e);
}
protected virtual void EnhanceQuery(object sender, BeforeSerializeToClientEventArgs e)
{
DataProviderScriptWebPart dataProvider = sender as DataProviderScriptWebPart;
dataProvider.Properties.Add("MyProperty", this.MyProperty);
}
Vous pouvez maintenant obtenir cette propriété dans un modèle d'affichage HTML:
<!--#_
var myValue = ctx.DataProvider.get_properties()["MyProperty"];
_#-->
<div>_#= myValue =#_</div>
Autres conseils
Je me demande pourquoi vous avez besoin d'un modèle d'affichage pour cela du tout!Vous pouvez mettre une limite de 5 numéro de résultat dans CSWP et ajouter une partie Web de l'éditeur de contenu A la fin de la page (après CSWP) pour guider l'utilisateur vers une nouvelle page.