Archives du mot-clé filtre de recherche

Ajout d’un filtre de recherche pour un type de contenu externe SharePoint 2013


Cet article fait partie d’une série concernant la mise en oeuvre de liste externes et de workflows avec SharePoint. Les étapes seront passées en revue :

_______________________________________________________________________________________________

Lors du déploiement d’un type de contenu externe par programmation, dans une colonne de données externes, si aucun filtre de recherche n’est créé, il sera compliqué voire impossible de sélectionner certains éléments. En effet si le nombre d’élément est trop grand tous ne peuvent être disponible à la sélection.

external column sharepoint

Un filtre de recherche est alors indispensable. Celui-ci peut être créé via SharePoint Designer avec certaines limites ou par code. C’est cette 2e solution qui fait l’objet de cet article.

Pour cela prenons l’exemple d’une recherche par nom de personne. Il faut :

  • ajouter un nouveau paramètre sur la méthode de recherche de liste
  • ajouter un descripteur de filtre sur cette méthode

1 – Sélectionner l’entité BDC et la méthode ReadList.

méthode BDC sharepoint

2 – Ajouter un paramètre pour le nom de type String.

descripteur de filtre sharepoint

3 – Ajouter un descripteur de filtre (étendre ce noeud puis cliquer sur ajouter), le renommer en « NomPersonne » et le typer « Comparison ». Sélectionner « NomPersonne » pour filtre associé dans la fenêtre propriétés.

descripteur de filtre

Les types disponibles sont les suivants, on voit dans ce cas qu’il va surement falloir créé d’autres fitres afin de fournir un mécanisme complet aux utilisateurs :

Types de filtres pris en charge par le service Business Data Connectivity

4 – Modifier la méthode avec le code suivant :

public static IEnumerable<PERSONNE> ReadList(string Nom)
        {
            string connectString = SecureStoreUtils.getSQLConnectionString(sssAppId, serverName, dataBaseName);
            AventureWorksDataContext dataContext = new AventureWorksDataContext(connectString);

            if (string.IsNullOrEmpty(Nom))
            {
                IEnumerable<PERSONNE> pList =
                from p in dataContext.PERSONNE.Take(1000)
                select p;
                return pList;
            }
            else
            {
                IEnumerable<PERSONNE> pList =
                    from p in dataContext.PERSONNE
                    where p.LastName.Contains(Nom)
                    select p;
                return pList;
            }
        }

5 – déployer le filtre de recherche et le tester.

search filter external content type sharepoint 2013