![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| InfoPath Forum d'entraide sur InfoPath (concevoir des formulaires basés sur XML) |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: avril 2008
Messages: 44
|
Bonjour, je vais créer un sujet à part puisque je pense que mon problème diffère quand même de celui-çi
http://www.developpez.net/forums/sho...4&postcount=19 Néammoins avec cette solution je suis parvenu à çà: ![]() Ce qui est proche de ce que j'aimerais mais j'ai de nombreux problèmes Par exemple étant donné que l'on ajoute les éléments avec XCollectionInsert par copie, si je change de mois, ca mettra les 60 jours,si je veut effacer, il n'y a que XCollectionRemoveAll qui marche mais qui m'éfface également la collection 'que l'on copie', ce qui plante les futurs chargement de mois. Voilà donc ma question, est-ce que la méthode par insertion correspond ? puisque je ne peut (ne sait) pas par exemple comment résoudre les problèmes de suppression. Si oui comment faire Si non, je pense qu'il faudrai que je remplace ca par un tableau normal, auquel je rajoute des champs, en spécifiant le xpath à l'aide d'une boucle par exemple. Mais ca je ne sait pas si c'est possible. Ou autre chose ?_? Voilà merci à ceux qui sauraient m'éclaircir les idées Cordialement, Fred Dernière modification par Yurnero_ ; 09/06/2008 à 10h47 |
|
|
|
|
|
#2 (permalink) |
|
Membre du Club
![]() Date d'inscription: juillet 2007
Localisation: Cote Ouest
Âge: 25
Messages: 107
|
Salut,
Je ne veux pas dire de connerie mais il me semble qu'il n'est pas possible de rajouter des champs sur une structure infopath. Le problème sera que tu auras une erreur de schema xml. Je n'ai pas trop suivi ton problème mais peut-être que tu peux simplement avoir un tableau extensible et tu peux gérer les suppressions (voir aussi les ajouts) par le code. Ou tout simplement avoir une structure figée que tu gères avec des mises à jour conditionnelles. Bonne journée. Cordialement. |
|
|
|
|
|
#3 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: avril 2008
Messages: 44
|
Bon j'ai pas mal avancé à force de bûcher, et je tombe sur un truc à la con :s
Je parcourt une source de données secondaires pour faire ce test, et en cas de succès je remplit un champ. Code :
private bool estFerie(XPathNodeIterator listFerie, string jourATest) { bool b = false; listFerie.Current.MoveToFirst(); while (listFerie.MoveNext()) { if (jourATest == listFerie.Current.Value.ToString()) { b = true; MessageBox.Show(null, "le " + jourATest + " est férié", "Trouvé"); } } return b; } Or, si je fait un parallèle le même code pour juste afficher le contenu de la source, à savoir Code :
XPathNodeIterator listeFerie = DataSources["Jour Feries"].CreateNavigator(). Select("/dfs:myFields/dfs:dataFields/dfs:Jour_Fériés/@Date",NamespaceManager); string message = string.Empty; while (listeFerie.MoveNext()) { message += listeFerie.Current.Value + System.Environment.NewLine; } MessageBox.Show(message); Quelqu'un sait ou est mon erreur msieur'dame ? edit aucun rapport avec le 'e' de liste manquant, je le passe correctement en paramètre |
|
|
|
|
|
#4 (permalink) |
|
Membre du Club
![]() Date d'inscription: juillet 2007
Localisation: Cote Ouest
Âge: 25
Messages: 107
|
A tout hasard:
Ne récupére tu pas l'unique noeud sur lequel il est placé en faisant ton "Current" dans "listFerie.Current"? Je n'ai pas testé mais cela semble probable. As tu regardé le xml de listFérié.Current en debug? Tu ne dois pas tout avoir... Ou regarde combien de fois tu rentre dans ton while dans chaque cas... Cordialement. Rémi |
|
|
|
|
|
#5 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: avril 2008
Messages: 44
|
Alors c'est super bizarre, j'ai mis un text box avant la boucle, la première fois,(premier test) je récupère toute la liste, comme prévu (donc non pour ta question)
Par contre pour les jours suivant je ne récupère que le dernier champ (donc oui ! ) mais même sur cette valeur le test ne marche pas ... en tout ca ya pas la MessageBox "trouvé" A priori je dirait que ca vient de me MoveToFirst, à part ca y'aurai quoi pour ce placer sur la première valeur ? Résolu : en fait une fois le premier test effectué le node iterator se retrouvait sur une seule node. du coup je l'ai cloné en debut de boucle et fait la boucle sur le clone et ca marche Dernière modification par Yurnero_ ; 13/06/2008 à 10h47 |
|
|
|
|
|
#6 (permalink) |
|
Membre du Club
![]() Date d'inscription: juillet 2007
Localisation: Cote Ouest
Âge: 25
Messages: 107
|
Ben en fait il suffit que tu enlève le:
listFerie.Current.MoveToFirst(); J'ai regardé du codee que j'avais déja fait et j'attaquais direct le While après la selection. En tout cas je peux te certifier que cela marche. Bonne journée Cordialement Rémi |
|
|
|
|
|
#7 (permalink) |
|
Membre à l'essai
![]() Date d'inscription: avril 2008
Messages: 44
|
Oui mais si je ne revenais pas à la première je serait tombé directement sur la dernière au second passage
La solution Code :
private bool estFerie(XPathNodeIterator listeFerie, string jourATest) { XPathNodeIterator liste = listeFerie.Clone(); bool b = false; while (liste.MoveNext()) { if (jourATest == liste.Current.Value.ToString()) b = true; } return b; } Code :
foreach (XPathNavigator selectedNode in liste) { if (selectedNode.Value.Contains("-")) { MessageBox.Show(selectedNode.Value); //selectedNode.DeleteSelf(); } } Mais ce qui est 'zarb', si je demande seulement un affichage ca m'affiche les 31 jours par exemple, et si je demande l'effacage (DeleteSelf) ca m'efface la première et ca sort de la boucle, par contre si je reclique sur le bouton ca efface la suivante et ainsi de suite une par une .. C'est moi ou c'est complétement pas logique |
|
|
|
![]() |
![]() |
||
Créer/Gérer/Supprimer un tableau de champ dynamiquement ?
|
||
| Outils de la discussion | |
|
|