aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 2008
-
23 avril 2008 à 12:11
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
24 avril 2008 à 12:19
Bonjour à tous,
J'ai une feuille MDI qui contient un panel.
Quand je clique dans un menu, j'affiche dans ce panel un usercontrol qui contient une datagrid.
Je voudrais ensuite, en fonction du client que je selectionne afficher dans cette datagrid la liste des factures.
Cette liste de facture provient d'une procédure stockée dans une base Sqlserver 2005.
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 24 avril 2008 à 12:17
Oh puré, j'ai trouvé !
La réponse est tellement bête !!!!!
En fait, c'est qu'une question de portée de variable.
Je déclarais mon usercontrol dans mon private sub.
Du coup, toutes les propriétés étaient accessible uniquement de là.
J'ai déclaré au niveau de ma class principale et du coup je peux envoyer tout ce que je veux maintenant dans mon usercontrol sur mon panel.
Avant je faisais le code ci-dessous pour ouvrir mon usercontrol
Dim tempObject As
New
Analysis
Panel1.Controls.Clear()
Panel1.Controls.Add(tempObject)
tempObject.Dock = DockStyle.Fill
Maintenant je fais ça :
tempObject = New
Analysis
Panel1.Controls.Clear()
Panel1.Controls.Add(tempObject )
tempObject .Dock = DockStyle.Fill
En déclarant dans ma class principale : DIM tempObject as Analysis
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 23 avril 2008 à 14:06
ben, je ne sais pas comment faire !!!
Je voudrais créer un databinding entre mon menu qui contient mon paramètre (code client) et mon datagrid qui est dans mon panel. Le tout via une procédure stockée dans ma base sqlserver.
Dans l'idée :
- Je clique sur mon client AREVA
- Ca lance ma procédure stockée avec pour paramètre AREVA
- Et ca m'affiche dans mon datagrid qui est dans mon panel le résultat de ma procédure stockée (liste des factures).
Dim ObjetPR
As SqlParameter = .Parameters.Add(
"@nomclient", SqlDbType.VarChar, 20)
ObjetPR.Value = SystemInformation.UserName.ToString
ObjetDR = .ExecuteReader(CommandBehavior.CloseConnection)
End
WithICI JE VOUDRAIS AJOUTER LE CODE QUI ME PERMET DE METTRE A JOUR MON DATAGRID QUI EST DANS UN USERCONTROL ET QUE JE PLACE DANS UN PANEL AVEC LE CODE SUIVANT :
Dim tempObject
As
New
Analysis
Panel1.Controls.Clear()
Panel1.Controls.Add(tempObject)
tempObject.Dock = DockStyle.Fill
'je vide mon objet DataReader pour le relancer sur les zones clients
ObjetDR.Close()
BLS_CS.Close()
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 23 avril 2008 à 17:43
J'ai essayé la phrase en rose. Je veux dire affiche le dataset dans le control 6 (le 6 étant le datagrid) qui est dans le panel. MAIS biensur CA NE FONCTIONNE PAS !
Dim
DataSet
As
DataSet =
New
DataSet(ObjetDC.CommandText)
ObjetAD.Fill(DataSet)
Panel1.Controls(6).DataBindings.Add(DataSet.Tables(0))
'je vide mon objet DataReader pour le relancer sur les zones clients
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 24 avril 2008 à 11:36
Bonjour
C'est le DataSource qui doit être définit avec la valeur du DataSet et DataMember avec le nom de la table à visualiser.
Nota, je te conseil d'utiliser le controle DataGridView (si tu es .NET2+)
Ensuite, ta syntaxe :
Panel1.Controls(6)
est très risquée :
- Si tu rajoute/supprime un controle, ...
- Evite les noms par défaut dans le code (Panel1)
Je te conseil de nommer ton controle et de l'utiliser par son nom.
Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 24 avril 2008 à 12:05
Bonjour,
En fait mon soucis n'est pas trop sur le databinding. Je m'en occuperai plus tard.
C'est surtout sur comment communiquer à partir de la feuille MDI vers un usercontrol que j'ai loadé dans un panel ???
L'instruction ci-dessous m'affiche le nom de mon usercontrol ("Analysis")
MsgBox(Panel1.Controls(0).Name.ToString(), MsgBoxStyle.Critical)
Si je change d'index et que je mets 6 par exemple, c'est "out of range" !!!
Pour simplifier :
Imaginons que j'ai un textbox2 dans mon usercontrol Analysis, je voudrais afficher quelque chose dedans sur l'événement click de mon menu principal dans ma feuille MDI.
J'imagine un truc comme ca !
Panel1.analysis.textbox2.text = "Client AREVA"
Mais bien sur cette instruction ne fonctionne pas du tout. Je voudrais savoir comment faire !!!
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 24 avril 2008 à 12:19
Bonjour
Ce n'est pas vraiment conseiller d'accéder à un controle inclu dans un UserControl (on peut jouer avec la visibilité, mais c'est pas propre), je te conseil plutot d'utiliser des méthodes et des propriétés définit au niveau de ton UserControl qui accèderont aux membres désirés de tes controles contenus.
Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site