OVH Cloud OVH Cloud

DataBindings

6 réponses
Avatar
Gabrielle D.
Voici mon probl=E8me :

Tous mes contr=F4les (Text, label et datagrid) sur ma "Form"
sont reli=E9s avec un Dataset et un DataTable comme suit:

(datagrid)
Me.dgdSousCatProduit.SetDataBinding
(Me.DstSousCatProd, "SousCategorieProduit")

(textbox)
Me.txtDescCategProduit.DataBindings.Add("Text",=20
Me.DstSousCatProd, "SousCategorieProduit.DescriptionCategPr
oduit")

D'apr=E8s ce que j'ai lu, il serait plus judicieux=20
d'employer un "Dataview" pour relier mes contr=F4les qu'un=20
DataTable.

Mon probl=E8me est comment relier mon datagrid avec un=20
dataview.
J'ai essay=E9 un exemple :

Me.dgdSousCatProduit.DataSource =3D Me.DataViewSousCatProduit
Me.dgdSousCatProduit.DataBind() 'Donne une erreur

Me.dgdSousCatProduit.DataBindings() 'Donne une erreur=20
aussi

Il y a s=FBrement quelquechose que je ne fais pas=20
correctement!

Lors d'un ajout j'utilise les commandes suivantes:

Me.BindingContext
(Me.DstSousCatProd, "SousCategorieProduit").EndCurrentEdit
()
Me.BindingContext
(Me.DstSousCatProd, "SousCategorieProduit").AddNew()

Tout cela fonctionne correctement sauf si je "Bind" des=20
contr=F4les comme un CheckBox (Databindings sur Checked) ,=20
l=E0 plus rien ne fonctionne!

Peut-on m'=E9clairer sur ce sujet?
Merci de vos r=E9ponses!

6 réponses

Avatar
G_F
peut être une reponse dans le lien ci-dessous?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbwlkwalkthroughdisplayingdatafromsingletableinwindowsform.asp


Gérard


--
--------------------
Gérard Férini
Switzerland
http://home.tiscalinet.ch/gferini/
remove -move to reply personally

--------------------
"Gabrielle D." wrote in message
news:2b82501c4690d$1f850880$
Voici mon problème :

Tous mes contrôles (Text, label et datagrid) sur ma "Form"
sont reliés avec un Dataset et un DataTable comme suit:

(datagrid)
Me.dgdSousCatProduit.SetDataBinding
(Me.DstSousCatProd, "SousCategorieProduit")

(textbox)
Me.txtDescCategProduit.DataBindings.Add("Text",
Me.DstSousCatProd, "SousCategorieProduit.DescriptionCategPr
oduit")

D'après ce que j'ai lu, il serait plus judicieux
d'employer un "Dataview" pour relier mes contrôles qu'un
DataTable.

Mon problème est comment relier mon datagrid avec un
dataview.
J'ai essayé un exemple :

Me.dgdSousCatProduit.DataSource = Me.DataViewSousCatProduit
Me.dgdSousCatProduit.DataBind() 'Donne une erreur

Me.dgdSousCatProduit.DataBindings() 'Donne une erreur
aussi

Il y a sûrement quelquechose que je ne fais pas
correctement!

Lors d'un ajout j'utilise les commandes suivantes:

Me.BindingContext
(Me.DstSousCatProd, "SousCategorieProduit").EndCurrentEdit
()
Me.BindingContext
(Me.DstSousCatProd, "SousCategorieProduit").AddNew()

Tout cela fonctionne correctement sauf si je "Bind" des
contrôles comme un CheckBox (Databindings sur Checked) ,
là plus rien ne fonctionne!

Peut-on m'éclairer sur ce sujet?
Merci de vos réponses!
Avatar
Piotrek
Salut

Comment cree-tu ton DataView ?

Tu dis "plus judicieux" mais pour quelle raison? :)

Note: le datagrid genere des dataviews en interne pour pouvoir se binder
Avatar
Gabrielle D
Je crée mon Dataview en mettant un contrôle sur le Form
comme je fais d'ailleurs avec le OleDbConnection,
OleDbAdapter et le dataset. Mais je m'aperçois qu'il ne
mets pas à jour mes données en ouvrant le form en
question.Je fais bouger les données (+1, -1) pour les
mettre à jour. D'ailleurs est-ce une bonne méthode de se
servir de ces contrôles sur la Form ou dois-je les créer
par le code.
Si tous mes champs et mon datagrid sont reliés à mon
dataset, est-ce correct ou dois-je les reliés à un
dataview. Si oui pour un dataview, comment procéder?
Je débute depuis peu en VB.NET et j'aimerais adopter une
bonne méthode avec des exemples!
Merci de votre aide!




-----Message d'origine-----
Salut

Comment cree-tu ton DataView ?

Tu dis "plus judicieux" mais pour quelle raison? :)

Note: le datagrid genere des dataviews en interne pour


pouvoir se binder


.



Avatar
Piotrek
A premiere vue tu procede de la bonne facon

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Tu peux indifferement travailler avec les composants en mode graphique, ou
directement dans le code

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
Mais je m'aperçois qu'il ne
mets pas à jour mes données en ouvrant le form en
question.Je fais bouger les données (+1, -1) pour les
mettre à jour



J'ai pas tres bien saisi
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

A propos du DataView:
En resume, le Dataset contien les donnees, la Dataview permet de representer
ces donnees dans les controles.
Le Dataview permet en plus de personnaliser la representation des donnees
(trier, filtrer...)
Il peut exister en meme temps, plusieur vues pour les meme donnees
Definition du DataView
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdatadataviewclasstopic.asp

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

Si tous mes champs et mon datagrid sont reliés à mon
dataset, est-ce correct ou dois-je les reliés à un
dataview. Si oui pour un dataview, comment procéder?



C'est correct. En realite, le dataset cree en interne des DataViews par
defaut (sans filtre, ni tri, representant tous les enregistements) grace a
son DataViewManager.
Il en cree autant qu'il y a de tables.
Faire un DataView est optionnel. Il n'est necessaire de creer des DataView
que si tu veux personnaliser ton affichage (filtrer, trier les donnees qui
se trouvent dans le Dataset et ses DataTables)

Tu peux trouver des tutoriels tres complet sur Ado.Net ici:
http://dotnet.developpez.com/
dont
Les controles dépendants Windows.Form
et
Utiliser Ado.net
Avatar
Gabrielle D
>-----Message d'origine-----
A premiere vue tu procede de la bonne facon

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


*-
Tu peux indifferement travailler avec les composants en


mode graphique, ou
directement dans le code

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


*-
Mais je m'aperçois qu'il ne
mets pas à jour mes données en ouvrant le form en
question.Je fais bouger les données (+1, -1) pour les
mettre à jour



J'ai pas tres bien saisi


Il ya a des données que je lis et transforme ex.: 5.50 $
Dans la table c'est 5.5 que je transforme en 5.50 $
je me rends compte que ces données ne sont pas rafraîchit
à l'ouverture de mon form, c'est pourquoi je le fait
bouger +1 enr. -1 enr. pour le mettre à jour.
J'ai beaucoup de problème à lire des données non
connectées.
J'ai trouvé un exemple mais cela ne fonctionne pas lorsque
je tri mon datagrid en cliquant sur l'entête
Ex.: Dim bm As Bindingmanagerbase =
Me.DataGrid1.BindingContext(Me.DataGrid1.DataSource,
Me.DataGrid1.Datamember)
ensuite....
Dim dr As Datarow = Ctype(bm.Current, DataRowView).Row

Il y a peut-être quelquechose que je ne fais pas de
correct, et où placé ces commandes?
Merci beaucoup de ton aide!
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


*-

A propos du DataView:
En resume, le Dataset contien les donnees, la Dataview


permet de representer
ces donnees dans les controles.
Le Dataview permet en plus de personnaliser la


representation des donnees
(trier, filtrer...)
Il peut exister en meme temps, plusieur vues pour les


meme donnees
Definition du DataView
http://msdn.microsoft.com/library/fre/default.asp?


url=/library/FRE/cpref/html/frlrfsystemdatadataviewclasstop
ic.asp

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


*-

Si tous mes champs et mon datagrid sont reliés à mon
dataset, est-ce correct ou dois-je les reliés à un
dataview. Si oui pour un dataview, comment procéder?



C'est correct. En realite, le dataset cree en interne des


DataViews par
defaut (sans filtre, ni tri, representant tous les


enregistements) grace a
son DataViewManager.
Il en cree autant qu'il y a de tables.
Faire un DataView est optionnel. Il n'est necessaire de


creer des DataView
que si tu veux personnaliser ton affichage (filtrer,


trier les donnees qui
se trouvent dans le Dataset et ses DataTables)

Tu peux trouver des tutoriels tres complet sur Ado.Net


ici:
http://dotnet.developpez.com/
dont
Les controles dépendants Windows.Form
et
Utiliser Ado.net


.



Avatar
Piotrek
- Le probleme vient peut-etre du formattage, il n'y a qu'un moyen de
formatter correctement une info:

Utiliser l'evenement Format du bindingmangerbase

Definition
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsbindingclassformattopic.asp

Explication
http://msdn.microsoft.com/msdnmag/issues/03/08/AdvancedBasics/

Si tu fais deja comme cela, et que le probleme ne se pose qu'au premier
affichage de la form, force un mouvement dans les donnees (c'est explique
dans le second lien que je t'ai fourni):

thisCurrencyManager.Position = 0