UserControl et DataBinding

Résolu
cendretp Messages postés 6 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 6 mars 2005 - 3 mars 2005 à 20:07
cendretp Messages postés 6 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 6 mars 2005 - 4 mars 2005 à 11:28
J'ai un textbox mis à jour via un DataBinding dans un UserControl qui ne fonctionne pas mais cela fonctionne dans le textbox en dehors du UserControl.

4 réponses

taoetc Messages postés 346 Date d'inscription lundi 8 septembre 2003 Statut Membre Dernière intervention 3 septembre 2007 3
4 mars 2005 à 09:08
As tu conscience qu'il n'y a aucune question dans ton message? Et même si tu voulais savoir pourquoi mon usercontrol marche pas, on ne peut paste le dire , parce que sans un bout de code , on pourrait difficielement te répondre

Donc, la non réponse à ta non question ne peut etre que , oh, t'as pas de chance, mais ca marche à moitié quand meme

bon courage
3
cendretp Messages postés 6 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 6 mars 2005
4 mars 2005 à 10:25
Exat, un bout de code est difficile car le projet comporte de nombreuses classes. Mais le problème est le suivant. J'utilise DataBinding avec un TextBox sans problème mais lorsque ce TextBox se trouve dans un usercontrol le DataBinding ne fonctionne pas.

Voici le bout de code en question :


if (pControl
is
TextBox)


{



TextBox textBox = pControl
as
TextBox;


textBox.BindingContext =
this.Metier.bindingContext;


textBox.DataBindings.Clear();



Binding bd =
new
Binding(
"Text",
this.Metier.dtMetier,
this.DBChamp);


bd.Parse +=
new
ConvertEventHandler(bd_Parse);


bd.Format +=
new
ConvertEventHandler(bd_Format);


textBox.DataBindings.Add(bd);


}



// textBoxBase est un usercontrol avec le textbox textBoxBase définit en public dedans.

if (
this.Control
is
TextButtonBase)


{





TextBox textBox = ((
TextButtonBase)
this.Control).textBoxBase
as
TextBox;


((
TextButtonBase)
this.Control).BindingContext =
this.Metier.bindingContext;


textBox.BindingContext =
this.Metier.bindingContext;


textBox.DataBindings.Clear();


((
TextButtonBase)
this.Control).DataBindings.Clear();



Binding bd =
new
Binding(
"Text",
this.Metier.dtMetier,
this.DBChamp);


bd.Parse +=
new
ConvertEventHandler(bd_Parse);


bd.Format +=
new
ConvertEventHandler(bd_Format);



//textBox.DataBindings.Add(bd);


((
TextButtonBase)
this.Control).DataBindings.Add(bd);


}
3
cendretp Messages postés 6 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 6 mars 2005
4 mars 2005 à 10:52
Le problème vient de mes classes de bases (j'ai essayé avec un code simple et cela fonctionne). Je recherche le problème si je trouve je posterais la réponse.



this.BindingContext =
new
BindingContext();



DataSet ds =
new
DataSet(
"Test");


ds.Tables.Add(
new
DataTable(
"Test"));


ds.Tables[
"Test"].Columns.Add(
"Text");


ds.Tables[
"Test"].Columns.Add(
"User");


ds.Tables[
"Test"].Rows.Add(ds.Tables[
"Test"].NewRow());


ds.Tables[
"Test"].Rows[0][
"Text"] =
"Text";


ds.Tables[
"Test"].Rows[0][
"User"] =
"User";



this.BindingContext[ds.Tables[
"Test"]].Position = 0;



this.textBox1.BindingContext =
this.BindingContext;



this.textBox1.DataBindings.Add(
new
Binding(
"Text", ds.Tables[
"Test"],
"Text"));



this.userControl11.textBox1.BindingContext =
this.BindingContext;



this.userControl11.textBox1.DataBindings.Add(
new
Binding(
"Text", ds.Tables[
"Test"],
"User"));
0
cendretp Messages postés 6 Date d'inscription mercredi 28 avril 2004 Statut Membre Dernière intervention 6 mars 2005
4 mars 2005 à 11:28
J'ai trouvé mon user control n'était pas visible (UserControl.Visible = = false) lors de la définition du binding. Je relance cette définition (UserControl.VisibleChanged += new ...) lorsque l'objet devient visible et cela fonctionne.
Remarque : le problème est le même pour textbox et certainement pour les autres type d'objet visuel.
0
Rejoignez-nous