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

InfoPath .NET Discussion :

Remplir un tableau généré dynamiquement


Sujet :

InfoPath .NET

  1. #1
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut Remplir un tableau généré dynamiquement
    Bonjour, je suis confronté à un nouveau problème

    Je souhaiterais remplir ce tableau

    Le nombre de lignes de ce tableau est contenu dans la base de données, et lorsque je clique sur le bouton, le code suivant est exécuté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function CTRL4_5::OnClick(eventObj)
    {
     
    	var nbLigne= parseInt(XDocument.DOM.selectSingleNode("/my:mesChamps/my:NbLignes").text);
    	var i = 0; 
    	while (i<nbLigne) 
    	{ 
    		XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
    		i++;
    	}
    }

    La création du tableau marche sans aucun problème, mais la ou je bloque c'est ici :

    -Je dois à présent remplir les colonnes de ce tableau avec des champs de ma base de données.
    La solution que j'envisage (enfin le début de solution ^^) est la suivante :

    -Je récupere tous les champs de ma base via un webservice
    -Je les concatène dans un champ de mon formulaire
    -Avec JScript, je split afin de récupérer tous les champs comme ils sont stockés dans la base.

    Le souci, c'est que je ne sait pas comment :
    -Spliter en JScript
    -Affecter une colonne d'un tableau en JScript

    Cependant, si vous voyez une solution plus simple, je suis aussi preneur

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Je récupere tous les champs de ma base via un webservice
    Comment en XML? c'est dans une source de données secondaire de Infopath?

    Comment es-ce structuré?
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  3. #3
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    pour gagner un peu de temps dans ton code et afin qu'infopath ne réactualise pas a chaque insert tu peux mettre au début de ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.View.DisableAutoUpdate();
    et a la fin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.View.EnableAutoUpdate();
    Tu verras ca ira plus vite.
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  4. #4
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Non je ferais une requete SELECT qui renverrais un arraylist je pense ou bien je reverrais tout sous forme de chaine concaténée, je ne sais pas trop encore.

    J'ai expérimenté C# et XML et c'est vraiment pas évident ^^

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Bonjour cette solution de travail m'intéresse beaucoup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
    Tu aurait un lien avec des détails concernant l'utilisation de XDocument et de l'insertion, j'avais essayé mais il me manquait une assembly system.xml.link je croit, qui était introuvable. (j'ai prit l'habitude d'utiliser c# et

    Potentiellement, on peut arriver à (en fonction du mois choisi)
    un tableau de (31, fx mois) date,liste déroulante, en ajoutant ces champs de la même manière ? et les traiter par la suite ? Je pense notamment a empécher l'édition des jours non ouvrables ...

    J'ai prit l'habitude d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MainDataSource.CreateNavigator().SelectSingleNode
    "/my: blabla/my: blabla ",NamespaceManager).Value / SetValue
    Mais je ne peut pas utiliser une node dont le nom est modifié en concatenant des chiffres par ex, même si le champ existe.

    Mais c'est beaucoup trop long de créer 31 fois nb de colonnes champ à la main !

  6. #6
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Citation Envoyé par Yurnero_ Voir le message
    Bonjour cette solution de travail m'intéresse beaucoup.

    XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
    Euh ca c'est du code de Infopath Version 2003 et pas 2007. Je ne connais pas l'équivalent en 2007 mais tu devrais trouver facilement dans MSDN comment faire.
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    ok, une confirmation, il y a bien une assembly à ajouter ?

    edit : si c'est bien : System.Xml.Linq (in System.Xml.Linq.dll)
    je ne l'ai pas sur ma machine de dev, c'est normal ?

  8. #8
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Je ne saurais te répondre

    pour ce qui est de 2003, je n'ai pas eu d'assembly à ajouter

  9. #9
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Ce n'est pas du C# ce code est en JScript !

    edit : créé sous InfoPath avec Microsoft Script Editor

  10. #10
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 31
    Points
    31
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(luck!=0&&help==1()) People.SetHumor(Happy)
    else die();
    ah ? une bonne nouvelle
    la mauvaise, c'est ou ca ? Oo

  11. #11
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    lool

    en fait je pense aussi passer en c# mais il faut que je procure visual studio avec office tools developper kits, j'aimerais pouvoir utiliser du code c# aussi

  12. #12
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    stop edit :p

    bah c'est pas une bonne nouvelle mais bon, tu code avec quoi toi ?

    J'ai du mal a cerner Infopath, car j'ai un peu appris sur le tas de moi meme. Mais :

    -Je fais le formulaire sous Infopath
    -Je remplis des champs avec des webservices en c# développés avec Visual Web Developper Express Edition
    -Et j'ai du avoir recours au JScript d'InfoPath pour créer mon tableau automatiquement (avec Microsoft Script Editor) mais Virgul m'a dit qu'on pouvait coder en C# au lieu de JScript en utilisant Visual Studio et Office Developper Tool Kit

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Ah ceci explique celà, je suis sous infopath 2007, donc je suppose que la limitation c#/ vb n'est pas sur la 2003, et qu'on y codait en Jscript ?

    Bon merci, je vais chercher si il y a du c# permettant ca !

    edit : visual studio 2005 avec VSTA

  14. #14
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    On peut coder en C# avec 2007 ?

    Ah bah meme pas besoin de se procurer Visual Studio alors

    Oui en 2003 tu as soit VBScript soit JScript

  15. #15
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Oula vous avez totalement faux tous les deux désolé...

    Le code qui est sur ce poste est du code Jscript avec le modèle object 2003 de Infopath. Avec 2003 on travaille avec msxml3 et avec 2007 on utilise msxml6 je crois.

    Donc le syntax diffère ce qui fait que le code jscript modèle object 2003:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
    en C# modèle object 2003:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    thisXDocument.View.ExecuteAction("xCollection::insert", "groupe2_1");
    Ce code en modèle object 2007 (C# et jscript) ne s'écrit pas comme ca. Il s'écrit autrement vous le trouverez surement sur MSDN.

    Pour développer en C# on doit avoir Visual Studio que ce soit en 2007 ou en 2003. Note: pour la version 2003 faut avoir minimum la SP1 pour pouvoir coder en C# (actuellement Office 2003 est en SP3).

    J'espère que j'ai été clair et que vous comprendrez.
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  16. #16
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Non je ferais une requete SELECT qui renverrais un arraylist je pense ou bien je reverrais tout sous forme de chaine concaténée, je ne sais pas trop encore.
    oui ben c'est bien beau tout ca mais ca me dit pas sous quelle forme? tes champs concaténés y ont quoi dedans? Et surtout il doivent aller dans quelle partie du xml?

    La c'est un peu comme si je demandais: "Comment on ouvre une porte?"

    et que je me demande pourquoi personne ne répond? Ah ben oui j'oublié de frapper
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  17. #17
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Bon on fait simple :

    je récupere de la base les champs dans un webservice qui va les concatener et renvoie un string contenant les champs concaténés (séparés par une '*' par exemple).

    Dans le formulaire, je récupère ce string qui est la concaténation des champs de la base dans un champ InfoPath.

    Et ensuite je split cette string concaténée en JScript et j'inserer les champs splités dans mon tableau extensible, et ce à chaque insertion de ligne.


  18. #18
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Oki, problème résolu, je poste le code de la solution si y'en a qui ont le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function CTRL169_5::OnClick(eventObj)
    {
    	var TabObjConcat = XDocument.DOM.selectSingleNode("/my:MonExpressionXPath/my:StringObjConcatene").text;
    	var TabObj = TabObjConcat.split("*");	
    	var nbLigne= TabObj.length;
    	var i = 1; 
    	XDocument.DOM.selectSingleNode("/my:mesChamps/my:BilanAnneeNMoinsUn/my:TabBilan/my:Tab/my:RappelObjAnneePasse").text = TabObj[0];
    	while (i<nbLigne) 
    	{ 
    		XDocument.View.ExecuteAction("xCollection::insert", "NumTableauExtensible");
    		XDocument.DOM.selectSingleNode("/my:monExpressionXPath/my:Tab[last()]/my:Champ").text = TabObj[i];
    		i++;
    	}
    }

    Voilà, merci une fois de plus à Maître Virgul

  19. #19
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    XDocument marche nativement chez toi ?

  20. #20
    Membre du Club Avatar de cocosql
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Points : 59
    Points
    59
    Par défaut
    Oui, je ne passe par aucun intermédiaire ...

    faut juste pas oublier le XDocument.DOM

    n'est-ce pas Virgul ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Effacer un tableau généré dynamiquement
    Par fripette dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 19/02/2015, 16h46
  2. Réponses: 3
    Dernier message: 21/06/2009, 15h16
  3. Changer background tableau généré dynamiquement sur rollover
    Par jobo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2009, 19h07
  4. Réponses: 3
    Dernier message: 28/10/2008, 18h38
  5. Réponses: 5
    Dernier message: 20/03/2008, 11h37

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