Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Selection d'un BindingSource dans un autre formulaire depuis le concepteur

17 réponses
Avatar
cc.18
Bonjour,
Je suis débutant en c#.
J'ai un dataset relié à une base de donner SQL Server, Sur un formulaire,
j'ai mon dataset, un table adapter et un bindingsource, avec tous ceci,
j'arrive bien a lire modifier ma base.
Je creer un deuxieme formulaire ou j'insere un dataGridView, comment je
peux selectionner ( pour la proprieté DataSource) mon BindingSource du
formulaire precedent.
Je ne sais pas si je suis claire, en gros, je voudrais pouvoir avoir acces
au composant d'un formulaire dans un autre formulaire et pourvoir les
selectionner dans la fenetre de propriété.

Merci d'avance pour vos réponses.

7 réponses

1 2
Avatar
Christophe Lephay
"Faust" a écrit dans le message de groupe de
discussion :
c'est pas que c'est mieux: c'est juste conceptuellement impossible
et si dans delphi on peut le faire, c'est que l'éditeur se permet de
prendre des libertés avec les concepts de la POO. Libertés basées sur des
supositions du déroulement du programme: rien ne garanti à l'éditeur que
ce qu'il t'autorise à faire ne plantera pas lamentablement
là, VS ne t'autorise simplement pas à faire n'importe quoi



De mémoire, ce n'est pas tout à fait comme ça que Delphi gérait la question
(en tout cas les versions que j'avais utilisées), et ça n'avait rien à voir
avec des "libertés avec les concepts de la POO" qui autoriseraient à "faire
n'importe quoi".
Avatar
Faust
/Après mure réflexion, _Christophe Lephay_ a écrit/ :
"Faust" a écrit dans le message de groupe de
discussion :
c'est pas que c'est mieux: c'est juste conceptuellement impossible
et si dans delphi on peut le faire, c'est que l'éditeur se permet de
prendre des libertés avec les concepts de la POO. Libertés basées sur des
supositions du déroulement du programme: rien ne garanti à l'éditeur que ce
qu'il t'autorise à faire ne plantera pas lamentablement
là, VS ne t'autorise simplement pas à faire n'importe quoi





De mémoire, ce n'est pas tout à fait comme ça que Delphi gérait la question
(en tout cas les versions que j'avais utilisées), et ça n'avait rien à voir
avec des "libertés avec les concepts de la POO" qui autoriseraient à "faire
n'importe quoi".



hum.... autoriser de renseigner la valeur d'une propriété avec la
propriété d'une variable globale (première liberté) dont aucune
certitude n'est donnée qu'une instance sera bien stockée dedans au
moment de la création de la dite classe (deuxième liberté) j'appelle ça
"autoriser à faire n'importe quoi"

c'est pas pour rien que la majorité des gens qui ont une bonne
expérience du développement profesionnel sous delphi retirent
systématiquement la déclaration de cette variable globale: c'est entre
autre pour ne plus permettre à Delphi de nous autoriser à faire ce
n'importe quoi

--
*/Teträm/*
http://www.tetram.org

"L'amour pour épée, l'humour pour bouclier" - Bernard Werber
Avatar
cc.18
Bonsoir,
Ci j'ai bien compris, il n'ai pas possible de faire ce que je veux en
conception.
Donc, sur mon formulaire B, je met un dataGridView, je selectionne ma
source de données.
VS me crée sur mon formulaire le dataset ( ou une instance ?), un
BindingSource et un TableAdapter.
pour récuperer les données, je doit donc utiliser la methode fill de mon
TableAdapter. Je suis d'accord, cela fonctionne, mais je trouve dommage
d'interroger de nouveau la base de données vu que j'ai déja mes données dans
ma table que j'ai récupéré par la méthode fill de mon TableAdapter de la
form A, de plus, ci je modifie les données dans la forme B et que je les
renvoies dans la BD, il faut que je refasse un fill dans ma form A pour
mettre à jour. Point de vu perfomance, ce n'est pas idéal.
Ou alors, j'ai pas tous compris !!

Merci quand même de vos réponses.




"cc.18" a écrit dans le message de
news:4a6ed41e$0$273$
Bonjour,
Je suis débutant en c#.
J'ai un dataset relié à une base de donner SQL Server, Sur un formulaire,
j'ai mon dataset, un table adapter et un bindingsource, avec tous ceci,
j'arrive bien a lire modifier ma base.
Je creer un deuxieme formulaire ou j'insere un dataGridView, comment je
peux selectionner ( pour la proprieté DataSource) mon BindingSource du
formulaire precedent.
Je ne sais pas si je suis claire, en gros, je voudrais pouvoir avoir
acces au composant d'un formulaire dans un autre formulaire et pourvoir
les selectionner dans la fenetre de propriété.

Merci d'avance pour vos réponses.




Avatar
Gloops
Bonsoir,

Ouaouh, si je peux me permettre, attention à ton style dense, il faut
s'accrocher -d'autant que tu as un peu tendance à passer d'une idée à
une autre sans prévenir.

Bon, alors à ce que je comprends, si tu veux partager un objet d'accè s
aux données entre plusieurs formulaires, ce n'est pas vraiment pour
faire face à un verrouillage, mais plutôt pour des raisons
d'optimisation. Tu te dis que si on crée des objets d'accès aux donné es
sur plusieurs formulaires, ça fera autant d'accès, et si c'est pour l es
mêmes données c'est dommage.

Voilà qui semble fort juste comme raisonnement, sauf si un aspect m'é chappe.

Maintenant, autre chose me dérange dans ton message. Qu'on ait du mal à
te comprendre, bon, ça, ça arrive à tout le monde, mais j'en arrive à me
demander si tu as lu le reste du fil ? Faust a fait savoir qu'il est
possible de rendre public l'objet d'accès aux données, que c'est mê me
possible avec la boîte de dialogue de propriétés. En revanche, quan d
j'ai remarqué qu'il n'apparaissait pas dans la liste des sources de
données disponibles dans les propriétés d'une DataGridView, Faust m 'a
répondu qu'il fallait réaliser la liaison par code dans le module. Ce la
a même donné lieu à un échange "métaphysique" quant à savoir si c'était
dommage ou au contraire une bonne chose que cette source de données
n'apparaissait pas dans la boîte de dialogue.

Bon, ou alors on en revient à la case départ : je n'ai pas bien compr is
l'objet de ton message ?
____________________________________
cc.18 a écrit, le 30/07/2009 21:04 :
Bonsoir,
Ci j'ai bien compris, il n'ai pas possible de faire ce que je veux en
conception.
Donc, sur mon formulaire B, je met un dataGridView, je selectionne ma
source de données.
VS me crée sur mon formulaire le dataset ( ou une instance ?), un
BindingSource et un TableAdapter.
pour récuperer les données, je doit donc utiliser la methode fill de
mon TableAdapter. Je suis d'accord, cela fonctionne, mais je trouve
dommage d'interroger de nouveau la base de données vu que j'ai déja mes
données dans ma table que j'ai récupéré par la méthode fill d e mon
TableAdapter de la form A, de plus, ci je modifie les données dans la
forme B et que je les renvoies dans la BD, il faut que je refasse un
fill dans ma form A pour mettre à jour. Point de vu perfomance, ce n' est
pas idéal.
Ou alors, j'ai pas tous compris !!

Merci quand même de vos réponses.


Avatar
cc.18
Désolé pour mon style.

Tu a bien compris mon résonnement pour l'acces au donnés entre formulaire,
c'est pour des raisons d'optimisation.

Derniere chose, j'ai bien lu tous le fil et les remarques de Faust, mais
cela me semble " lourds" pour un language comme c# et VS. Mais bon.

Merci quand même pour tous.






"Gloops" a écrit dans le message de
news:
Bonsoir,

Ouaouh, si je peux me permettre, attention à ton style dense, il faut
s'accrocher -d'autant que tu as un peu tendance à passer d'une idée à
une autre sans prévenir.

Bon, alors à ce que je comprends, si tu veux partager un objet d'accès
aux données entre plusieurs formulaires, ce n'est pas vraiment pour
faire face à un verrouillage, mais plutôt pour des raisons
d'optimisation. Tu te dis que si on crée des objets d'accès aux données
sur plusieurs formulaires, ça fera autant d'accès, et si c'est pour les
mêmes données c'est dommage.

Voilà qui semble fort juste comme raisonnement, sauf si un aspect m'échappe.

Maintenant, autre chose me dérange dans ton message. Qu'on ait du mal à
te comprendre, bon, ça, ça arrive à tout le monde, mais j'en arrive à me
demander si tu as lu le reste du fil ? Faust a fait savoir qu'il est
possible de rendre public l'objet d'accès aux données, que c'est même
possible avec la boîte de dialogue de propriétés. En revanche, quand
j'ai remarqué qu'il n'apparaissait pas dans la liste des sources de
données disponibles dans les propriétés d'une DataGridView, Faust m'a
répondu qu'il fallait réaliser la liaison par code dans le module. Cela
a même donné lieu à un échange "métaphysique" quant à savoir si c'était
dommage ou au contraire une bonne chose que cette source de données
n'apparaissait pas dans la boîte de dialogue.

Bon, ou alors on en revient à la case départ : je n'ai pas bien compris
l'objet de ton message ?
____________________________________
cc.18 a écrit, le 30/07/2009 21:04 :
Bonsoir,
Ci j'ai bien compris, il n'ai pas possible de faire ce que je veux en
conception.
Donc, sur mon formulaire B, je met un dataGridView, je selectionne ma
source de données.
VS me crée sur mon formulaire le dataset ( ou une instance ?), un
BindingSource et un TableAdapter.
pour récuperer les données, je doit donc utiliser la methode fill de mon
TableAdapter. Je suis d'accord, cela fonctionne, mais je trouve dommage
d'interroger de nouveau la base de données vu que j'ai déja mes données
dans ma table que j'ai récupéré par la méthode fill de mon TableAdapter de
la form A, de plus, ci je modifie les données dans la forme B et que je
les renvoies dans la BD, il faut que je refasse un fill dans ma form A
pour mettre à jour. Point de vu perfomance, ce n'est pas idéal.
Ou alors, j'ai pas tous compris !!

Merci quand même de vos réponses.


Avatar
Christophe Lephay
"Faust" a écrit dans le message de groupe de
discussion :
/Après mure réflexion, _Christophe Lephay_ a écrit/ :
"Faust" a écrit dans le message de groupe de
discussion :
c'est pas que c'est mieux: c'est juste conceptuellement impossible
et si dans delphi on peut le faire, c'est que l'éditeur se permet de
prendre des libertés avec les concepts de la POO. Libertés basées sur
des supositions du déroulement du programme: rien ne garanti à l'éditeur
que ce qu'il t'autorise à faire ne plantera pas lamentablement
là, VS ne t'autorise simplement pas à faire n'importe quoi





De mémoire, ce n'est pas tout à fait comme ça que Delphi gérait la
question (en tout cas les versions que j'avais utilisées), et ça n'avait
rien à voir avec des "libertés avec les concepts de la POO" qui
autoriseraient à "faire n'importe quoi".



hum.... autoriser de renseigner la valeur d'une propriété avec la
propriété d'une variable globale (première liberté)



Une donnée globale n'est pas une liberté vis à vis des concepts de la poo,
pas plus qu'un membre publique n'est moins poo qu'un membre privé. Ce qui
est poo, c'est de ne fournir que l'accessibilité strictement nécessaire (et
c'est vrai dans beaucoup d'autres paradigmes).

dont aucune
certitude n'est donnée qu'une instance sera bien stockée dedans au moment
de la création de la dite classe (deuxième liberté) j'appelle ça
"autoriser à faire n'importe quoi"



Si je me souviens bien, Delphi instanciait tous les formulaires avant d'en
afficher un seul, ce qui offrait toutes les certitudes nécessaires quant à
la création de leurs composants.

c'est pas pour rien que la majorité des gens qui ont une bonne expérience
du développement profesionnel sous delphi retirent systématiquement la
déclaration de cette variable globale: c'est entre autre pour ne plus
permettre à Delphi de nous autoriser à faire ce n'importe quoi



A vrai dire, ce dont je me souviens, c'est qu'il y avait des composants
spéciaux pour centraliser les données (DataModules, de mémoire).

Pour conclure, parce qu'on est quand même un peu hors sujet, l'argument qui
voudrait que ce soit plus ou moins poo n'est pas, selon moi, un bon
argument. L'efficacité est une question de compromis, pas de doctrine. Quand
bien même on prendrait quelques libertés avec les concepts OO, si le gain en
productivité le justifie, pourquoi pas.

Le modèle .net n'est pas non plus exempt de tels compromis, le plus flagrant
étant à mes yeux l'initialisation par appel des propriétés plutôt que par un
constructeur idoine (l'omniprésence des constucteurs par défaut en .net en
réduit la robustesse).
Avatar
Christophe Lephay
"cc.18" a écrit dans le message de groupe de discussion :
4a71eec4$0$426$
Bonsoir,
Ci j'ai bien compris, il n'ai pas possible de faire ce que je veux en
conception.
Donc, sur mon formulaire B, je met un dataGridView, je selectionne ma
source de données.
VS me crée sur mon formulaire le dataset ( ou une instance ?), un
BindingSource et un TableAdapter.
pour récuperer les données, je doit donc utiliser la methode fill de mon
TableAdapter. Je suis d'accord, cela fonctionne, mais je trouve dommage
d'interroger de nouveau la base de données vu que j'ai déja mes données
dans ma table que j'ai récupéré par la méthode fill de mon TableAdapter de
la form A, de plus, ci je modifie les données dans la forme B et que je
les renvoies dans la BD, il faut que je refasse un fill dans ma form A
pour mettre à jour. Point de vu perfomance, ce n'est pas idéal.
Ou alors, j'ai pas tous compris !!



Tu peux par exemple définir un constructeur pour ton deuxième formulaire
pour lui fournir la source de données du premier. Par exemple :

public partial class Form1 : Form
{
...
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2(bindingSource1);
f.Show();
}
}


public partial class Form2 : Form
{
public Form2(BindingSource source)
{
InitializeComponent();
dataGridView1.DataSource = source;
}
}
1 2