SharePoint: Filtrage d'une Liste de Dossiers
J'ai une bibliothèque de documents SharePoint qui a une structure de dossiers utilisés pour organiser les documents (mais aussi pour le contrôle de l'accès, via des autorisations sur les dossiers).
Les documents de la bibliothèque sont mis à jour chaque mois, et nous stockons tous les mois de la version du document dans le même dossier, il y a un "mois" de la colonne utilisée pour le filtrage qui contiennent des valeurs comme Jan 09, Fév 09, etc. Il ressemble à ceci:
Titre Mois ----- ----- Sous-dossier 1 Sous-dossier 2 [] Faits Intéressants Jan 09 [] Faits Intéressants Fév 09 [] Faits Intéressants Mar 09 [] Nombre Fascinant Jan 09 [] Nombre Fascinant Fév 09 ...
Maintenant, parce que les utilisateurs seront généralement plus intéressé dans le mois, je voudrais qu'ils soient en mesure d'appliquer un filtre, puis sélectionnez (dire) Mar 09. Cependant, si ils le font en utilisant le haut-filtrage, il filtre également les dossiers, et ils ne peuvent plus naviguer dans la hiérarchie des dossiers. Ce n'est pas bon - je veux qu'ils soient en mesure de se déplacer entre les dossiers avec le filtre intacte, de sorte qu'ils n'ont pas besoin de l'éteindre et de le rallumer.
J'ai pensé que je pourrais être en mesure d'utiliser un affichage personnalisé (choix d'où type=dossier ou mois=[mois]), et dans une mesure qui ne fonctionne pas. Cependant, je ne peux faire fonctionner un fixe mois, alors que j'ai besoin de l'utilisateur d'être en mesure de sélectionner le mois, peut-être par l'intermédiaire d'un contrôle de liste déroulante sur la page (et je ne veux pas créer de 60 points de vue pour les 5 ans de mois, je ne veux pas avoir à créer une nouvelle vue de chaque mois).
J'ai pensé qu'il pourrait être possible de créer une vue dans le code (plutôt que par le biais de l'INTERFACE utilisateur), mais je n'ai pas été en mesure de comprendre comment faire pour obtenir une valeur dynamique (spécifique à un utilisateur de configuration) dans la requête CAML.
Tous les pointeurs grandement appréciée! Et en passant, j'ai suis conscient du dogme que les dossiers sont mauvais, et que tout devrait juste être une liste. Cependant, après avoir examiné les solutions de rechange, j'ai encore à l'avantage de l'utilisation de dossiers - si je peux résoudre ce problème.
Merci d'avance.
Vous devez vous connecter pour publier un commentaire.
Pourriez-vous créer un type de contenu qui hérite du Dossier qui contient une colonne de Mois? Ensuite, remplacez le dossier normal type de contenu avec votre nouveau sur cette liste. Réglez le mois de façon appropriée, et maintenant votre filtre doit contenir le dossier.
Vous pouvez essayer d'utiliser un DataViewWebpart filtrée par une forme webpart pour ce faire.
La gestion de l'affichage des dossiers et les dossiers des éléments lorsqu'il est cliqué sur un problème. C'est une des raisons pour ne pas utiliser les dossiers, je suppose.
Je suis actuellement confronté à exactement la même question, au lieu d'une simple date, j'ai besoin de filtre basé sur les noms de dossier et ensuite afficher ces dossiers sur la page. Une fois qu'ils cliquez sur un dossier qu'ils doivent être en mesure d'afficher le contenu de ce dossier.
Je n'ai pas trouvé une bonne solution, mais pour le vôtre, vous devriez être en mesure de simplement créer un personnalisé CAML requête à l'aide de la contentQueryWebpart.
Quelque chose comme ceci:
Personnaliser CQWP
Mais vous pouvez le faire sur la date/heure de la le dossier et rien d'autre.
Votre requête serait quelque chose comme:
Je voudrais ajouter également le nom du dossier que vous êtes à la recherche pour vous assurer que rien d'autre se retourna.
Espère que cette aide. Et merci de ne postback si vous trouvez une autre solution.
Je crois que j'ai trouvé votre solution - La DataWebPart est en fait ce qui m'a aidé....
À l'aide de ce aussi a été un énorme ouvre les yeux:
ASP.NET les Contrôles de Filtrer les Données à Afficher
Pour résumer, vous pouvez simplement remplir votre liste déroulante avec les mois de l'année combo, ajouter l'partagé Doc de bibliothèque sur la page via le concepteur de vue, l'utilisation d'un filtre de connexion à votre ASP.NET liste déroulante et pronto vous avez un filtre sur un par mois.
Vous pouvez aussi avoir une valeur par défaut à une date déterminée à l'aide de XSL, tout est dans le code-vue 🙂
@Gary
Les Contrôles de filtre de la vue de DONNÉES (mon 2ème réponse) ne fait garder la hiérarchie des dossiers.
Vous pouvez le faire aller dans des sous-dossiers, si nécessaire, mais dans votre cas, vous êtes seulement intéressés à montrer un dossier spécifique correct?
Ce que vous faites est a SP-concepteur de le faire, je ne pouvais pas trouver un moyen de le faire via le régulier webparts.
Le filtre ne fera que vous donner un choix à taper quelque chose dans, tapez le mois en cours, dire Mai 09. puis basculer vers le "code" à la vue
< ;Où> ;.... C'est la requête CAML je l'avais mentionné avant. Vous pouvez le faire en HTML décoder sur l'ensemble de la chose, de sorte qu'il est un peu plus lisible.
Mais dans l'essence, le filtre est une simple requête CAML.
Vous souhaitez modifier cette requête, de sorte que votre mois/année combo est que le courant du mois/de l'année.
CAML possède une fonctionnalité appelée <MOIS/> qui retourne le mois dans le format suivant: mm/aaaa (vous devrez peut-être modifier le format de votre colonne ou en créer un nouveau pour le rendre facile sur vous-même) - Votre CAML requête doit être quelque chose d'un peu à ça:
ou
html codé:
< ;Where> ;< ;Eq> ;< ;FieldRef Name='Month'/> ;< ;Value Type='Number'> ;< ;Month/> ;< ;/Value> ;< ;/Eq> ;< ;/Where> ;
La clé, c'est que vous êtes seulement à la création d'un filtre au niveau de la racine, sur la vue de données. Une fois qu'il a cliqué sur le dossier, ils sont tout simplement jetés dans la bibliothèque de documents et afficher le tout dans le dossier.
Espérons que cette aide!
ps: sur le html codé, j'ai dû ajouter des espaces avant le"; " si vous pouviez voir le code.
J'ai beaucoup travaillé avec filtrage et de la SPGridView. Peut-être que vous pouvez obtenir quelque chose hors de la recherche dans ce post sur mon blog.
Comme je l'ai dit, ne sais pas si ça va vous aider, mais un coup d'oeil.