Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2237 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU] DataBindings sur la deuxième ligne d'un DataTable ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] DataBindings sur la deuxième ligne d'un DataTable ?

n°1355704
gwenCPP
Je taf
Posté le 28-04-2006 à 08:57:20  profilanswer
 

Bonjour à tous,  
 
Je souhaite comprendre les mécanismes du DataBindings en utilisant une DataTable en MC++.  
 
Je sais comment créer la DataTable mais je souhaiterais associé la première ligne créée à un TextBox (ça marche chez moi) et la deuxième ligne (Row) à un autre TextBox(Ca je ne sais pas faire).
 
Quelqu'un sait-il comment faire ou connait-il un tuto qui explique se dont j'ai besoin?  
 
(Je précise que c'est bien du C++ .NEt = C++ Managé et non du C# ou autres ; et je n'arrive pas à utiliser les astuces de C# dans mon code)
 
Merci,
 
 
Gwen
 
 
Code utilisé :
 
 
// Création d'une DataTable 1 Colonne 2 lignes
 
 
DataTable* t = new DataTable("Control" );
 
// Ajout d'une colonne
t->Columns->Add(S"Colonne1" );
DataRow* r;
 
 
// Création d'une ligne
r = t->NewRow();
r->Item[0] = this->texbox1->Text;
t->Rows->Add(r);
 
// Création d'une Deuxième ligne
r = t->NewRow();
r->Item[0] = this->textbox2->Text;
t->Rows->Add(r);
 
// Bindage de la première ligne dans un TextBox(OK => Ca marche chez moi)
this->textbox3->DataBindings->Add(S"Text",t,S"Colonne1" );
/* modification du TextBox avec :
DataRow* var = t->Rows->get_Item(0);
var->Item[t->Columns->IndexOf(S"Text" )] = S"Modification graceà un bindage Ok";
Si vous avez mieux je suis preneur aussi
*/

 
// Bindage sur la deuxième linge dans un TextBox (Je ne sais pas faire)
this->textbox4->DataBindings->Add(S"Text",??????,S"Colonne1" )
//...


Message édité par gwenCPP le 05-05-2006 à 15:52:38

---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
mood
Publicité
Posté le 28-04-2006 à 08:57:20  profilanswer
 

n°1355844
gwenCPP
Je taf
Posté le 28-04-2006 à 11:50:04  profilanswer
 

Sincèrement désolé d'insister mais j'ai besoin d'une réponse rapide, le délai d'obtention pour acheter un livre et avoir une éventuelle réponse est déjà trop long.
 
Y a-t-il quelqu'un dans le forum qui a déjà posé cette question?
Les personnes de ce forum ont-ils les compétences pour répondre à cette réponse.
 
Merci.
 
Gwen
 
 
 


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1355967
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 14:16:02  profilanswer
 

gwenCPP a écrit :

Y a-t-il quelqu'un dans le forum qui a déjà posé cette question?


 
fonction recherche  [:spamafote]  


---------------
Töp of the plöp
n°1355974
gwenCPP
Je taf
Posté le 28-04-2006 à 14:22:41  profilanswer
 

Merci,  
 
mais visiblement dans ce forum il n'y pas de question équivalente ; d'ailleur rare sont les forums où les gens posent cette question...
 
Le peu de forums qui posent cette question sont restés sans réponse (snif).
 
Ce que je sais je l'ai appris dans des tuto et sur msdn mais soit je ne suis pas suffisamment doué pour voir que ma réponse est dedans soit personne n'a jamais utilisé les DataTable, DataSet et compagnies en C++ .Net Managé ... (Mais j'en doute, sans être spécialiste je pense que c'est tout de même bateau comme question)...
 
En tout cas merci car c'est le seul forum ou j'ai au moins eu une réponse.
 
Gwen


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1355988
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 14:29:03  profilanswer
 

Décris plus précisemment le "j'y arrive pas" : ça plante ? ça ne compile pas ? ca ne fais rien du tout ?


---------------
Töp of the plöp
n°1355998
gwenCPP
Je taf
Posté le 28-04-2006 à 14:41:38  profilanswer
 

En fait je ne sais pas du tout le faire;
 
L'auivalent en C# est ;
 
this->TextBox->BindingContext["t"]->Position++; //pour passer à la ligne suivante
Sauf que IntelliSense [] n'est pas une expression valide et le . ou -> ne peut être appliqué à un BindingContext.
 
Ensuite, j'ai essayé de comprendre par moi même comment faire via Internet mais je n'ai rien trouvé en C++ Managé...
 
Conclusion après, la fonction recherche j'espère que quelqu'un peut m'aider et me dire comment faire.


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1355999
gwenCPP
Je taf
Posté le 28-04-2006 à 14:42:07  profilanswer
 

Correctif : en C# ce n'est pas de -> mais des .


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1356078
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 16:04:16  profilanswer
 

ici t'as un exemple d'utilisation:
http://fr.gotdotnet.com/quickstart [...] sData.aspx
 
ca t'aide ?


---------------
Töp of the plöp
n°1356081
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 16:05:00  profilanswer
 

A propos, a voir l'aide dans msdn, BindingContext est une propriété de haut niveau, pas un bete tableau:
http://msdn.microsoft.com/library/ [...] ttopic.asp


---------------
Töp of the plöp
n°1356120
gwenCPP
Je taf
Posté le 28-04-2006 à 16:32:31  profilanswer
 

this->TextBox4->BindingContext->Item[t, S"Text"];  
 
compile correctement mais this->TextBox4->BindingContext[t]->position me donne ceci (Le site gotdotnet fait un équivalent en C# de ça):
 
error C2107: illegal index, indirection not allowed
error C2227: left of '->Position' must point to class/struct/union
 
 
M'a aidé puisque c'est avec celui-ci que j'ai appris à faire le début du problème.
 
PS: effectivement, ce n'est pas un tableau simple, mais je pense que ça doit être un problème récurrent puisque plein de source C# utilise .Position comme dans le site que tu donnes.
 
En C++, je n'ai pas d'équivalent, Bref je nage dans le vide sans vraiment savoir ou aller.


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
mood
Publicité
Posté le 28-04-2006 à 16:32:31  profilanswer
 

n°1356130
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 16:49:18  profilanswer
 

lis bien les exemples de msdn, ca t'aidera parce que là tu mélange c# et c++;
 
lis plus de doc sur le c++ aussi peut etre, sur sa syntaxe, etc.


Message édité par _darkalt3_ le 28-04-2006 à 16:54:39

---------------
Töp of the plöp
n°1356137
gwenCPP
Je taf
Posté le 28-04-2006 à 16:57:13  profilanswer
 

error C2664: 'System::Windows::Forms::BindingManagerBase __gc *System::Windows::Forms::BindingContext::get_Item(System::Object __gc *)' : cannot convert parameter 1 from 'int' to 'System::Object __gc *'
 
Je pense qu'ici [t, S"Text"] permet de récupérer un DataColumn (élément d'un DataTable)...


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1356139
gwenCPP
Je taf
Posté le 28-04-2006 à 16:59:50  profilanswer
 

C mon problème, je n'ai pas de doc C++ Managé et l'achat d'un livre met 3 plombes dans ma boite.
 
Sur le net il n'y a rien en C++ la dessus, mais merci de ton aide


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1356160
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 17:14:55  profilanswer
 

et la msdn ?


---------------
Töp of the plöp
n°1356167
gwenCPP
Je taf
Posté le 28-04-2006 à 17:19:12  profilanswer
 

Visiblement ils utilisent un BindingManagerBase class pour changé Position mais ce n'est pas compatible avec le BindingContext,
 
Sinon je trouve des choses utilsant ^ au lieu de * c'est du C++/CLI je crois ou quelque chose comme çà.


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1356175
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 17:24:27  profilanswer
 

mmmh ça c'est du framework 2.0, dsl j'ai pas encore manipulé
 
bon courage !


---------------
Töp of the plöp
n°1356178
gwenCPP
Je taf
Posté le 28-04-2006 à 17:26:11  profilanswer
 

Merci
 
A++


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1356181
_darkalt3_
Proctopathe
Posté le 28-04-2006 à 17:28:10  profilanswer
 

:jap:


---------------
Töp of the plöp
n°1360273
gwenCPP
Je taf
Posté le 05-05-2006 à 11:08:15  profilanswer
 

J'ai résolu une partie de mon problème
 
La première erreur est ici :
 
this->textbox3->DataBindings->Add(S"Text",t,S"Colonne1" );  
 
mais : this->textbox3->DataBindings->Add(new Binding(S"Text",t,S"Colonne1" ));
NB : Attention au namespace de Binding System::Windows::Forms::
 
Il faut que ce soit un pointeur sinon on a quelques problèmes.
 
Ensuite pour changer la postion, il faut ceci :
 
1- Mettre la DataTable dans un DataSet
DataSet* dS = new DataSet(S"MaDataSet" );
dS->Table->Add(t); // Voir MSDN pour vérifier que c'est la bonne syntaxe
 
2- Récupérer le context (Valide pour tous les composants et la fenetre)
BindingManagerBase* bmb = this->BindingContext->get_Item(dS->Table->Item[S"Control"]); // Si intellisense ne permet pas d'accéder aux données et fonctions membre, ce n'est pas grave çà compile et fonctionne tout de même
 
3-Pour modifier la ligne de la table:
bmb->set_Position(int ligne=2);
 
Cela permet de naviguer dans les lignes de la DataTable.
 
Il me reste à trouver comment lier un TextBox à une ligne indépendament de la bmb->Position


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1360457
gwenCPP
Je taf
Posté le 05-05-2006 à 14:51:01  profilanswer
 

J'ai également trouvé une solution pour différencier les positions de chaque TextBox
 
En fait, au démarrage de l'application, tous les composants ont le même BindingContext que la fenêtre parente.
 
Pour avoir un BindingContext spécifique au TextBox, il faut faire ceci avant de faire la liaison (DataBindings):
 
this->TextBox->BindingContext = new System::Windows::Forms::BindingContext();
this->TextBox->DataBindings->Add(new Binding(S"Text",this->MaDataSet,S"MaTable.MaColonne" ));
 
Ensuite on récupère le BindingManagerBase du TextBox pour modifier la position de la ligne en lecture (valable uniquement pour ce composant)
 
MonBMB = this->Identity4->BindingContext->get_Item(this->MaDataSet,S"MaTable" );
MonBMB->set_Position(2); // Exemple de numéro de ligne
 
avec Mon BMB qui est déclaré comme cela : System::Windows::Forms::BindingManagerBase* MonBMB;
 
 
Pour toutes informations supplémentaires :  
 
http://www.csharpfr.com/infomsg/WI [...] 20213.aspx
 
Le point que je vient de citer et le 4.18


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1360461
gwenCPP
Je taf
Posté le 05-05-2006 à 14:55:00  profilanswer
 

Désolé pour cette question,
 
Dois je mettre le sujet comme résolu ou fermé dans ce forum?
si oui comment dois je faire,
 
merci
 
Gwen


---------------
Dans la vie le meilleur chemin n'est pas forcément le plus droit mais celui sur lequel on se sent le plus à l'aise
n°1360512
_darkalt3_
Proctopathe
Posté le 05-05-2006 à 15:45:58  profilanswer
 

merci de clore ton sujet :jap:
 
pour cela, tu édites ton premier poste en mettant [résolu] en début de subject

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [RESOLU] DataBindings sur la deuxième ligne d'un DataTable ?

 

Sujets relatifs
RESOLU :comment générer un fichier excel depuis Cshell[resolu] Intégration de flash sur page html.
[Resolu] Appel de javascript depuis code .NetDemande de regexp[Résolu]
[résolu]Bug de combobox[PHP] Bug étrange avec strftime (résolu)
[Résolu] Simuler un click[SAGE] requete sql via odbc sous sage gestion commercial ligne 100
[.NET] [En partie résolu] debug appli web[Delphi]Limiter le nombre de ligne dans un Memo ?
Plus de sujets relatifs à : [RESOLU] DataBindings sur la deuxième ligne d'un DataTable ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR