IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SharePoint .NET Discussion :

Custom field + Render Pattern + SQL


Sujet :

SharePoint .NET

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Par défaut Custom field + Render Pattern + SQL
    Bonjour,

    Peut-on utiliser du SQL ou du C# dans le fichier xml (fldtype_xxx) d'un custom field ?

    Merci pour vos réponses

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Par défaut
    Sans aucune certitude, je dirais non. Car le xml est utilisé comme source de données et ne sera donc pas "exécuté".
    Si la question est peut-on mettre du C# ou du SQL pour le récupérer après et l'exécuter depuis un composant tiers, je dirais oui pour du SQL et peut-être pour du C#.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Par défaut
    En fait l'idée c'est que mon custom field enregistre une valeur telle un ID d'une table SQL et affiche le nom correspondant dans l'affichage de la liste.

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2006
    Messages
    264
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 264
    Par défaut
    Je ne pense pas que ce soit possible de faire ca directement. A mon avis il faudra passer par un dev spécifique pour l'affichage de la liste.
    Je suppose que tu ne peux pas stocker directement le nom dans ton customfield ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Par défaut
    Ben pour l'instant j'ai le nom et l'id qui s'affichent dans mon custom field dans l'affichage de liste mais on m'a fait la remarque comme quoi il serait bien de n'enregistrer que l'id et d'afficher le nom en fonction de cet id dans la liste.

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Salut,

    ta question m'a intéressé et j'y ai réfléchi et j'ai fini par développer un petit truc. Bon je ne suis pas sur que cela fasse partie des "best practice" mais cela fonctionne. L'idée est de continuer à stocker l'id et la valeur mais sous forme "id#;valeur". Ensuite, ton RenderPattern aurait cette allure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
        <RenderPattern Name="DisplayPattern">
          <SetVar Name="GUID">
            <GUID />
          </SetVar>
          <HTML>
            <![CDATA[<div id="]]>
          </HTML>
          <GetVar Name="GUID" />
          <HTML>
            <![CDATA["></div>]]>
          </HTML>
          <HTML>
            <![CDATA[
              <script language="Javascript" type="text/javascript">
                var value = "]]>
          </HTML>
          <Column HTMLEncode="TRUE" />
          <HTML>
            <![CDATA[";
                document.getElementById("]]>
          </HTML>
          <GetVar Name="GUID" />
          <HTML>
            <![CDATA[").innerHTML = value.substr(value.indexOf("#;") + 2);;
            </script>]]>
          </HTML>
        </RenderPattern>
    J'explique un peu. L'idée c'est de créer un div avec comme ID un guid (car on va s'en resservir après). Étant donné qu'on se servir du GUID à deux endroits, il faut que ce soit deux fois le même, donc j'utilise SetVar pour stocker la valeur de ce GUID dans la variable nommée... GUID. Ui c'est bien trouvé. J'utilise également GetVar pour récupérer la valeur.

    Une fois le div créé et le GUID stocké, on appelle une p'tite fonction JavaScript qui fait simplement un substring sur la valeur de la colonne et qui ne récupère que ce qui suit le #;.

    C'est p'tet pas la meilleure solution, mais elle m'a quand même pas l'air trop moche ;-)

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Par défaut
    ça peut être utile mais le problème c'est que si le nom change (pour x raisons) il ne va pas le changer dans l'affichage de ma liste tant que j'aurais pas été dans l'élément pour le modifier.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Salut,

    effectivement c'est un problème... Si tu veux que cela se fasse je pense que c'est carrément de l'AJAX que tu devras implémenter dans ton javascript. Et ce code AJAX irait vérifier la valeur de la donnée et modifierait celle de ta colonne en conséquence mais ça deviendrait vite lourd...

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Par défaut
    Ben c'est une demande qui m'a été faite mais j'ai tout de suite pensé que ça serait lourd vu que pour chaque ligne il faut contacter le serveur sql pour vérifier la valeur.

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Ué c'est effectivement la contrainte que je voyais... Une autre idée serait de créer un Job qui serait charger de mettre à jour la valeur dans la liste toutes les X heures ou autres. Le résultat ne sera pas forcément en temps réel mais bon. Je suis pas sur que faire une requête SQL par item d'une liste soit forcément une bonne idée...

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Par défaut
    Non c'est clair je vais voir.
    Mais le problème c'est qu'en fait je veux stocker mon id et afficher le nom donc un job n'ira pas.
    Merci en tout cas.

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Ca ne change rien ça. Dans ton job, tu t'arranges pour qu'il browse toute ta liste, et fasse les mises à jour. Les données peuvent très bien être sauvegardées sous forme de ID#;Valeur et là, dans le render pattern de ton custom field, tu utilises celui que j'ai codé quelques posts plus haut, il fonctionne je l'ai testé.

  13. #13
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    395
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 395
    Par défaut
    C'est simple de résoudre ce type de problème.

    Dans la classe contrôle de votre Custum field au lieu de mettre
    if (ControlMode == Microsoft.SharePoint.WebControls.SPControlMode.Display)
    {
    return;
    }

    Fait une modification pour votre champs (ce n'est pas une vraie modification)
    Juste affectation de la même valeur.

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Es-tu sur que ce code sera appelé lors de l'affichage de la liste ?

  15. #15
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    395
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 395
    Par défaut
    Ce code est appelé lors de l'affichage d'un élément et non pas d'une liste.
    Pour l'affichage de la liste il faut que tu fait un appel à une autre page avec Httprequest dans ton ficher XML(c'est la seule solution que j'ai trouvé); et dans cette page tu fait l'affectation ou la modification de la liste par code.
    C'est vrai c'est vraiment chiant mais j'ai passé beaucoup de temps de chercher une solution meilleur et en vain.

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Ah il me semblait bien, je croyais que tu amenais une solution nouvelle, en fait tu me répète en d'autres mots :-p Le soucis était surtout l'affichage de la liste ^^

  17. #17
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    395
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2008
    Messages : 395
    Par défaut
    Oui c'est ça pour l'affichage de la liste j'ai fait un appel à l'aide de HTTPRequest à une autre page juste pour faire la modification!

Discussions similaires

  1. Custom field type
    Par mschoum dans le forum SharePoint
    Réponses: 3
    Dernier message: 04/11/2010, 19h55
  2. Problème Display pattern(custom field) + javascript
    Par lightbulb dans le forum SharePoint
    Réponses: 1
    Dernier message: 17/02/2009, 16h49
  3. [Custom Field] hériter d'un SPFieldNumber ?
    Par nassim12 dans le forum SharePoint
    Réponses: 1
    Dernier message: 17/09/2008, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo