Edgar Maucourant - Expert / Formateur SharePoint

Aller au contenu | Aller au menu | Aller à la recherche

Tag - Visual Studio 2008

Fil des billets - Fil des commentaires

mercredi 11 mars 2009

Vue en mode feuille de données (Access Web DataSheet) et répertoires : attention !

Bonjour à tous,

Ce post fait suite au précédent (non ??? si si) sur le problème des répertoires et des éléments dans les listes SharePoint.

Pour l'édition en masse des éléments dans les listes SharePoint il existe le mode "feuille de données" qui permet grâce à un composant ActiveX de voir le contenu de la liste au travers d'une interface type 'Microsoft Access'. Ce mode fonctionne très bien pour l'édition y compris avec les répertoires. Ainsi lorsque je me déplace dans un répertoire je ne vois que les éléments de ce répertoire dans la feuille de données, ce qui est parfait.

"Et donc ?" ce disent les plus perspicaces d'entre vous...

Et donc, le problème vient d'ailleurs (comme la vérité...ouais facile je sais...). Le soucis c'est lors de l'ajout de nouveaux éléments. Dans ce cas le comportement est plutôt frustrant puisque peu importe où je me trouve dans la liste les éléments sont créés à la racine...

Après plusieurs recherches et tentatives diverses et infructueuses, je me suis résolu à faire un gestionnaire sur l'évènement ItemAdded qui me permet de déplacer mon élément dans le bon répertoire en fonction de la valeur d'un champ de l'item (oui je sais c'est moche mais là je ne savais pas vraiment quoi faire d'autre à part changer complètement le développement...).

Voici donc le gestionnaire d'évènement :

public override void ItemAdded(SPItemEventProperties properties)
{
   using(SPWeb web = properties.OpenWeb())
   {
      SPListItem item = properties.ListItem;
      SPFile dummyFile = web.GetFile(item.Url);
      this.DisableEventFiring(); 
      dummyFile.MoveTo(web.Url + "/Lists/" + properties.ListTitle + "/" + item["RepName"].toString() + "/" + item.ID + "_.000");
      this.EnableEventFiring();
   }
}

A présent mes créations d'éléments au travers des feuilles de données fonctionnent correctement, mais je n'ai pas testé cette action sur une montée en charge importante donc le code est "fournis tel quel" sans garantie aucune :p

Bon code à tous !

PS : 3 posts dans la même journée je viens de péter mon record :)

Déplacement d'un SPListItem dans un répertoire d'une SPList

Bonjour à tous,

Quand il s'agit d'organiser l'information dans des bibliothèques de documents ou des listes SharePoint, il vaut mieux recourrir à des Content Types qu'utiliser des dossiers. Cependant parfois il est tout de même nécessaire d'utiliser des dossiers, notamment quand on nombre important d'items seront à terme stockés dans la liste (à cause de la fameuse barrière des (environ) 2000 items et de la chute de performance induite).

Le soucis lorsque l'on travaille avec des dossiers c'est que la création et le déplacement des éléments depuis le code SharePoint ce n'est pas si simple. On trouve un peu partout sur le net des exemples et des articles pour la création d'éléments dans une bibliothèque ou une liste (c'est la même procédure), par contre pour le déplacement c'est pas la même histoire.

Dans le cadre d'une bibliothèque le problème est assez simplement résolu via l'utilisation du SPFile associé à l'item (SPLIstItem.File) et plus précisement de la méthode MoveTo de cet objet. Par contre dans le cas d'une liste la propriété SPFile de l'objet SPListItem est null, donc impossible de faire le transfert...

Impossible ? non ! Un petit village d'irreductibles développeurs SharePoint (et bloggeurs) a percé le secret de ce déplacement. La méthode est pour le moins inattendue, complètement non documentée (à ce jour je n'ai trouvé qu'un post sur tout le net qui en parle) et très franchement capillotractée !!!

En réalité, en interne même pour les éléments d'une liste il existe bien un objet SPFile, mais celui-ci n'est tout simplement pas associé à l'item via la propriété File... Il faut le récupérer en utilisant la méthode GetFile() de l'objet SPWeb. Une fois que l'on a une référence à cet objet on peut utiliser la méthode MoveTo. Mais là aussi il y a une subtilité, il faut utiliser une URL de destination un peu particulière : URLduSite/Lists/NomListe/Rep/itemID_.000

Oui, oui vous avez bien vu "ID_.000", ce n'est pas très éloquent comme syntaxe mais cela fonctionne (ça sent un peu la bidouille quand même... si quelqu'un a une autre méthode...)

Voici donc un exemple de code (qui suppose que vous ayez déjà récupéré un SPListItem nommé item) :

using(SPWeb web = item.Web)
{
    SPFile dummyFile = web.GetFile(item.Url);
    dummyFile.MoveTo(web.Url + "/Lists/" + item.ParentList.Title + "/NomduRepertoire/" + item.ID + "_.000");
}

Et hop, votre item est transféré dans le bon répertoire, mais j'avoue quand même que cette technique me semble douteuse et j'émets les plus vives craintes sur la pérennité d'une telle méthode avec la future version de SharePoint (2010 ?). En attendant cela fonctionne et m'a tiré une belle épine du pied... (voir le prochain post...)

Bon code à tous !

samedi 21 février 2009

VSeWSS 1.3 CTP : beaucoup de nouveautés et compatibles x64 :)

Bonjour à tous,

Un message rapide pour vous dire que les Visual Studio extensions for WSS 1.3 en version CTP (Community Technology Preview) sont disponibles à cette adresse :

http://www.microsoft.com/downloads/details.aspx?FamilyID=b2c0b628-5cab-48c1-8cae-c34c1ccbdc0a&DisplayLang=en

J'avais été assez déçu lors de la release de la version 1.2 qui apportait le support pour Visual Studio 2008 mais pas en version x64. Cette version préliminaire 1.3 montre que Microsoft a travaillé dans ce sens, ce qui ne peux que me ravir :p

Beaucoup d'améliorations en vue dans le descriptif. Je n'ai pas encore testé tout ça mais ça à l'air bien fourni :)

Bon code à tous !

vendredi 23 janvier 2009

Développement d'applis x86 et SharePoint x64 : pas bon !

Bonjour à tous

Après avoir perdu 1 h de mon temps sur un message d'erreur peu éloquent (étonnant non, de la part de SharePoint ?), je vous livre une info qui après coup semble logique mais qui ne m'a pas sauté au yeux au début.

Si vous avez un SharePoint en x64 (64bits) et que vous développez une application Windows ou console pour utiliser le modèle objet de SharePoint, cette application doit aussi tourner en x64 sinon vous ne pourrais pas vous connecter à SharePoint par le modèle objet. L'erreur arrive lors de la connexion à la collection de site en utilisant :

SPSite siteCol = new SPSite("http://urldemacollectiondesite");

Cette ligne renvoie l'erreur : "L'application Web est introuvable à l'adresse http://urldemacollectiondesite, vérifiez patati, patata...). Ce qui n'est pas du tout explicite.

Dans mon cas, après vérification de l'url, des accès de substitution, des différents paramètrages, tout était conforme et mon application aurait du trouver la collection de site.

En réalité, j'avais passé mon application en cible x86 (32 bits) car j'utilisais le composant d'accès à Access (AccessDataSource) qui ne fonctionne pas en x64. En repassant mon application en x64 (je vous passe les détails de l'investigation :p) tout fonctionnait pour SharePoint mais plus pour Access... Grrrrrrr !!!!

Heureusement Access 2007 dispose d'un module d'export très pratique qui m'a permis d'exporter ma base de données sur le serveur SQL qui fait tourner SharePoint, et du coup j'ai pu utiliser le composant d'accès à SQL Server qui lui fonctionne très bien en x64 ! Bon ça m'a pris juste 1h30 -<:o)

Moralité : ne mixez pas les environnements ou evitez autant que possible ! (qui a dit on le savait déjà ?)

Bon code à tous !

mardi 1 juillet 2008

VseWSS 1.2 sorties oui mais.... pas en x64 :(

Bonjour à tous,

La pluspart d'entre vous l'on sûrement déjà noté, les VseWSS 1.2 (Visual Studio Extensions for WSS) sont sortis au début de ce mois. C'est une bonne nouvelle car elles apportent le support de Visual Studio 2008 ce qui manquait vraiment jusqu'à présent... Cependant un bémol (et de taille je trouve) vient ternir le tableau, ces extensions ne sont disponibles qu'en version 32 bits ! Exit les plates-formes de dév en x64. Or avec de plus en plus de serveurs disponibles en x64 et tout le buzz autour de cette avancée, beaucoup de clients ont migrés ou vont migrer leur infrastruture... Afin de limiter la casse lors du déploiement il vaut mieux avoir aussi des machines de développement en x64, J'ai donc décidé moi aussi de migrer certaines de mes machines de développement en x64, et là c'est le drame comme dirait l'autre.

Conséquence : Je me passerai des extensions pour le moment au profit d'autres outils disponibles sur CodePlex, mais c'est bien dommage quand même... En espérant que Microsoft sorte rapidement une version x64 mais pour le moment rien n'est annoncé, aller encore un petit effort les gars ! :)

Bon code à tous !

lundi 31 mars 2008

Slides du séminaire Visual Studio 2008 au Forum Emploi de la Défense

Bonjour à tous,

J'ai animé une réplique du séminaire Visual Studio 2008 du mois de Janvier (voir le précédent billet) lors du Forum Emploi Microsoft organisé par MSEmploi à la Défense.

Ceux qui étaient présents auront sûrement remarqué que j'ai explosé le temps imparti pour cette sessions (preque 4 heures au final). A toutes les personnes qui sont parties juste avant la fin (spâaaa bien !) je souhaiterais présenter mes excuses pour ce retard, à tous ceux qui sont restés, mes remerciements ! Cette session était comme la première bien chargée, et comme j'ai tenté de tenir compte des remarques qui m'avaient été faîtes lors du premier séminaire et j'ai approfondi un peu la partie Linq et suis allé un peu plus en douceur sur la partie SharePoint :)

Les personnes souhaitant obtenir les slides de la présentation pourront trouver le lien ci-dessous, pour les personnes ayant assistées au premier séminaire (celui de Janvier) il n'est pas nécessaire de re-télécharger ces slides qui ne comportent que quelques corrections de fautes d'orthographe (quelques -> euphémisme.. :o)

Pour accéder au contenu du séminaire vous pouvez télécharger le PDF des slides /!\ 10.5 Mo -> Clic droit et "enregister sous..." et patience... :p

Bon code à tous !

dimanche 24 février 2008

Workshop Techdays 2008 : les fichiers sont dispos :)

J'ai animé lors des Techdays 2008 deux Workshops : "Développement de Webpart avec SharePoint 2007" et "Réaliser un lecteur multimédia avec Silverlight 1.0". Beaucoup d'entre vous m'ont demandé de pouvoir disposer des documents pour retravailler le tout après la session : voeu exaucé !

Workshop sur le développement de WebPart SharePoint 2007 :
Télécharger le fichier de travail "SharePoint 2007"
Télécharger les slides de présentation

Workshop sur la création d'un lecteur vidéo avec Silverlight 1.0 :
Télécharger le fichier de travail "Silverlight 1.0"
Télécharger le fichier vidéo utilisé dans l'exercice
Télécharger les slides de présentation

N'hésitez pas à me faire part de vos commentaires pour améliorer ces documents :)

Bon code à tous !

dimanche 17 février 2008

VseWSS 1.1, VseWSS 1.2 et Visual Studio 2008

Pour faire echo à ce post : WebPart SharePoint et Visual Studio 2008 ?, Microsoft vient d'annoncer la release des VseWSS 1.1 lors de l'Office Developers Conference. Au menu, support avancé des solutions et features, corrections de bugs, amélioration de la rapidité du déploiement (IISReset remplacé par un Pool recycle). Des versions localisées (notamment en Français) sont prévues pour le mois de Mars.

Pour ceux qui utilisent déjà Visual Studio 2008 (j'espère que vous êtes nombreux :p) sachez qu'un support de VS2008 sera disponible dans les VseWSS 1.2 prévues pour le mois de Juin 2008. Encore un peu de patience les betas devraient arriver un peu plus tôt :)

Tout l'info sur le blog officiel de la SharePoint Products et Technologies Team : Announcing the Final Release of VSeWSS 1.1 (and the upcoming version 1.2)!

Bon code à tous !

lundi 11 février 2008

Workshops aux Techdays 2008

J'aurais souhaité écrire ce post avant le déroulement des workshops mais je n'ai pas eu le temps. Je détourne donc ce post pour faire état du déroulement de ces workshops.

Tout d'abord je vous remercie d'être venus si nombreux (la session Silverlight était pleine, nous avons dû refuser du monde !). Dans l'ensemble ces workshops se sont très bien déroulés (enfin pour moi, j'espère que ce fut le cas pour vous :), quelques erreurs dans mes documents que je ne manquerai pas de corriger avant de les mettre à disposition sur ce blog (bientôt, patience...). Le workshop SharePoint était trop riche pour tenir en 1 heure, il faudra que je le raccourcisse ou que j'allonge son temps estimé. C'est tout pour le moment, stay tuned !

Les techdays se poursuivent encore pendant 2 jours alors profitez en ! Et encore une fois merci à tous d'être venus. Bon techdays !

mardi 22 janvier 2008

Visual Studio 2008 en Français

Les abonnés de la newsletter MSDN l'auront sûrement déjà noté, Visual Studio 2008 en français est annoncé pour les heureux possesseurs d'un abonnement MSDN dès début février. Si vous n'êtes pas encore abonné c'est le temps de passer aux choses sérieuses !!! :o)

Souscrire un abonnement MSDN

Bon code à tous !

- page 1 de 2