Procédure : écrire un composant WebPart Filtre de case à cocher à sélection multiple
Cette rubrique traite de la création d'un composant WebPart de filtre simple qui peut fournir des valeurs filtrées à d'autres composants WebPart. L'exemple de composant WebPart de filtre de case à cocher pour les régions permet à l'utilisateur de filtrer les données sur la base des régions sélectionnées par l'utilisateur. L'interface utilisateur pour le filtre contient des cases à cocher et permet les sélections multiples.
En dehors de la création d'une interface utilisateur avec des contrôles de case à cocher, les étapes à suivre pour créer un composant WebPart de fournisseur de filtre simple sont les suivantes :
Implémenter l'interface ITransformableFilterValues pour connecter ce composant avec le consommateur de composants WebPart.
Exposer un point de connexion de fournisseur pour renvoyer l'instance de l'interface IFilterValues avec les valeurs sélectionnées par l'utilisateur.
Voici l'exemple de code pour le composant WebPart Filtre. Suivez les étapes décrites dans la Procédure pas à pas : écriture d'un exemple de composant WebPart Filtre consommateur simple pour déployer ce composant WebPart.
Exemple
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using aspnetwebparts = System.Web.UI.WebControls.WebParts;
using Microsoft.Office.Server.Utilities;
using wsswebparts = Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.Portal.WebControls;
using System.Collections.ObjectModel;
using Microsoft.SharePoint.Utilities;
using System.Data;
using System.Collections;
namespace MyWebPartLibrary
{
public class RegionFilterWebPart : aspnetwebparts.WebPart, wsswebparts.ITransformableFilterValues
{
CheckBoxList cblRegionList;
ListItem cbitemRegion;
public virtual bool AllowMultipleValues
{
get
{
return true;
}
}
public virtual bool AllowAllValue
{
get
{
return true;
}
}
public virtual bool AllowEmptyValue
{
get
{
return false;
}
}
public virtual string ParameterName
{
get
{
return "Geography";
}
}
public virtual ReadOnlyCollection<string> ParameterValues
{
get
{
string[] values = this.GetCurrentlySelectedGeographies();
return values == null ?
null :
new ReadOnlyCollection<string>(values);
}
}
protected override void CreateChildControls()
{
cblRegionList = new CheckBoxList();
Controls.Add(cblRegionList);
cbitemRegion = new ListItem();
cbitemRegion.Text = "Seattle";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "US";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "World";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "All";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
base.CreateChildControls();
}
[aspnetwebparts.ConnectionProvider("Region Filter", "ITransformableFilterValues", AllowsMultipleConnections = true)]
public wsswebparts.ITransformableFilterValues SetConnectionInterface()
{
return this;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
public string[] GetCurrentlySelectedGeographies()
{
String[] choices = new String[5];
bool anythingSelected = false;
for (int i = 0; i < cblRegionList.Items.Count; i++)
{
//get the selected choices
if (cblRegionList.Items[i].Selected)
{
anythingSelected = true;
if (cblRegionList.Items[i].Text != "All")
{
choices[i] = cblRegionList.Items[i].Text;
}
else
{
choices = null;
return choices;
}
}
}
if (!anythingSelected)
choices = null;
return choices;
}
protected override void RenderContents(HtmlTextWriter output)
{
this.EnsureChildControls();
RenderChildren(output);
}
}
}
Voir aussi
Autres ressources
Procédure : utiliser le composant WebPart Filtre CheckBox à sélections multiples