Share via


Procédure : écrire un composant WebPart Filtre de case à cocher à sélection multiple

  1. 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.

  2. 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 :

  3. Implémenter l'interface ITransformableFilterValues pour connecter ce composant avec le consommateur de composants WebPart.

  4. 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