none
ListViewWebPart connexion du RootFolderParameter RRS feed

  • Question

  • Bonjour,

    Je suis débutant en développement Sharepoint, je rencontre un problème de réalisation qui semble trés peu voir pas documenté. Le principe est fort simple, j'ai une webpart affichant l'arborescence d'une bibliothèque de document. A coté j'ai la ListViewWebPart sur la même bibliothèque. Je désire connecter les 2 avec la connexion de filtre. J'implémente donc ITransformableFilterValues qui me permet de réaliser cette connexion.

    Dans l'implémentation, il faut fournir le nom du paramètre. Je spécifie donc ListViewWebPart.RootFolderParameter (je n'ai trouvé aucune documentation sur ce membre).

    Le problème c'est qu'il ne reconnait pas cette valeur et qu'au momment de la liaison une popup s'affiche me demandant à quel champ lié "RootFolder".

     

    Voici le code :

    public class FoldersExplorerWebPart : WebPart, ITransformableFilterValues

    {

    [ConnectionProvider("Requête du dossier selectionné")]

     

    protected SPFolder selectedFolder = null;


            public ITransformableFilterValues GetFolderQuery()
            {
                return this;
            }

     

    #region ITransformableFilterValues Members

            public bool AllowAllValue
            {
                get { return true; }
            }

            public bool AllowEmptyValue
            {
                get { return false; }
            }

            public bool AllowMultipleValues
            {
                get { return false; }
            }

            public string ParameterName
            {
                get { return ListViewWebPart.RootFolderParameter; }
            }

            public ReadOnlyCollection<string> ParameterValues
            {
                get
                {
                    EnsureChildControls();
                    List<string> list=new List<string>(1);
                    list.Add(this.selectedFolder.Url);
                    return new ReadOnlyCollection<string>(list);
                }
            }

            #endregion
        }

    Remarque : Je n'ai pas mis le code remplissant selectedFolder ni la gestion d'erreur pour simplifer.

     

    Quelqu'un peut-il m'aider s'il vous plait ?

    D'avance merci.

    vendredi 18 juillet 2008 10:21

Toutes les réponses

  • Bonjour,

     

    Je n'ai toujours pas trouver de solution a ce problème qui est important pour moi. Personne n'a de piste sur la raison de se comportement ?

     

    mardi 22 juillet 2008 09:05
  • Bonjour,

     

    Il existe un contournement au problème. En effet la ListViewWebPart prend en compte certains éléments de l'url. J'ai donc mis en place un Response.Redirect en lieu et place de la connexion. Cependant la solution n'est pas satisfaissante sur 3 points :

    • Impossibilité de mettre plusieurs ListViewWebPart dans la même page si on spécifie les information sur l'url
    • On réalise un redirect pour rien
    • C'est beaucoup moins propre que la connexion

    Si quelqu'un à une vraie solution, je reste preneur.

     

    mercredi 30 juillet 2008 07:45
  • Bonjour,

     

    Je suis confronté à un phénomène que je ne comprend pas avec la ListViewWebPart. En effet cette webPart fournit plusieurs connexions dont une sur la ligne séléctionner. Je m'en sert pour afficher dans une autre webpart maison l'équivalent de l'historique des versions. A priori quand on met les 2 webpart en place pas de problème. Sauf ... quand on est plus dans le dossier racine.

    Le provider de cette connexion fournit une méthode pour spécifier la méthode callback qui recevra les lignes (la ligne en l'occurence). La méthode que je fournit est toujours correctement appellée. Cependant quand la ListViewWebPart n'affiche pas les élements de la racine, le paramètre qui lui est passé est null (au lieu d'une ICollection comme indiqué dans la doc ou plus exactement une DataRowCollection dans la pratique).

     

    Quelqu'un aurait-il une explication à ce phénomène ?

    merci.

    mercredi 30 juillet 2008 07:53
  • Bonjour

    Pour tout dire, je ne suis vraiment pas certain que la webpart puisse être connectée et filtrée sur le répertoire.

    Renaud Comte avait écrit une webpart qui s'approche très fortement (si ce n'est exactement) de ce que vous désirez : http://www.codeplex.com/SPDocLibBrowser.

    Malheureusement, le projet est destiné aux versions 2003 (WSS 2.0 & SPS 2003).

    Pour l'avoir réalisé pour un client, j'avais fait ma propre webpart d'affichage de listes personnalisable (vive l'XSLT Smile) et du coup un provider qui filtrait sur le répertoire.
    mercredi 30 juillet 2008 15:43
  • Bonjour,

     

    Désolé de répondre si tardivement (j'étais absent) et merci pour la réponse. J'ai téléchargé et examiné les source de Renaud Comte malheureusement il utilise le même mécanisme que celui que j'ai mis en place comme paliatif. C'est à dire le passage du RootFolder dans la QueryString. Si cela fonctionne correctement, c'est nettement moins propre et surtout cela limite le nombre de ListWebPart sur la même page. Dans mon cas il s'agit d'une page d'accueil affichant plusieurs fois la même list mais avec des réglages différents (essentiellement en fonction d'un champ d'état). Seule une des ces ListViewWebPart devrait être connecté à ma webpart contenant mon TreeView. Hors l'utilisation du paramètre en QueryString change le dossier de toutes ListViewWebPart de la page ... .

    Ce n'est donc pas une vraie solution.

    lundi 25 août 2008 09:57