ManuAntibes
Messages postés491Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention18 novembre 20215 28 juil. 2007 à 11:52
Bonjour à tous
J'ai trouvé comment faire transferer la datarow même avec plusieurs fenêtres ouverte.
Code dans MdiParent pour ouvrir plusieurs fenêtres:
Dim ChildForm As New GestionArticleModifier
ChildForm.MdiParent = Me
m_ChildFormNumber += 1
ChildForm.Text = "Fenêtre " & m_ChildFormNumber
ChildForm.Tag = "Fenêtre " & m_ChildFormNumber
ChildForm.Show()
Code dans la fenêtre qui recupère le DataRow:
'Recupere la ligne de la table Article qui a ete selectionner dans la fentre Recherche_ListeArticle.vb
Sub Recup_listeArticle(ByVal row As DataSet.Table_ArticleRow, ByVal NomFenetre As String)
For Each ChildForm As GestionArticleModifier In My.Forms.MDIParent.MdiChildren
If ChildForm.Tag = NomFenetre Then
ChildForm.DataSet.Table_Article.Clear()
ChildForm.DataSet.Table_Article.ImportRow(row)
Exit For
End If
Next
End Sub
A+
ManuAntibes
Messages postés491Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention18 novembre 20215 14 juil. 2007 à 21:23
Salut
j'ai trouvé, il s'agit de faire afficher la fenêtre en simple affichage avec ce code
GestionArticleModifier.MdiParent = Me
m_ChildFormNumber += 1
GestionArticleModifier.Text = "Fenêtre " & m_ChildFormNumber
GestionArticleModifier.Show()
Mais pas en multi affichage
Dim ChildForm As New GestionArticleModifier
ChildForm.MdiParent = Me
m_ChildFormNumber += 1
ChildForm.Text = "Fenêtre " & m_ChildFormNumber
ChildForm.Show()
voila la solution été simple, mais pas évidente à trouver...
Dis moi si pour toi ROMAGNY si le code est correct.
A+
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 10 juil. 2007 à 13:49
Salut, je t'envoie ca des que j'ai l'addresse email
sinon il existe encore une autre methode (qu'avait demontré Mitzu Furuta dans un Webcast)
en passant carrement le datacontext (il faudrait que je retrouve l'url du webcast), ce qui permet de faire du binding et entre les deux forms les deux etant synchronisées
bon si cette méthode est jolie en demonstration franchement jamais je l'utiliserais "en vrai" mais c'est bon a savoir
si je retrouve le lien je te le mets
ManuAntibes
Messages postés491Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention18 novembre 20215 10 juil. 2007 à 11:55
Salut Romagny
Voici mon email ecrie moi, et je te renverais l'appli si tu veux regarder.
A+
ManuAntibes
Messages postés491Date d'inscriptionmardi 24 octobre 2000StatutMembreDernière intervention18 novembre 20215 10 juil. 2007 à 07:16
Salut
Merci pour toutes ces explications.
En effet mon appli que j'ai mis sur le site est vraiment simple, c'est pour l'exemple que j'ai mis un truc simple.
Par contre si tu es d'accord je veux bien t'envoyer mon appli par mail, comme cela tu pourras voir l'ensemble.
Un truc bizarre c'est que sur mon appli, j'utilise 2 fois cette manip de passé un Datarow d'une fenetre à l'autre.
1 fois ça marche et la 2ème fois avec exactement le meme code ça ne marche pas !!!!!!
Hier soir j'ai tchaté sur Msn avec ThoT49 (http://www.vbfrance.com/auteurdetail.aspx?ID=997133), et lui aussi ne comprend pas pourquoi ça marche sur 1 et 2 pages, et apres dans le projet ça ne marche plus.
J'aimerais vraiement comprendre le truc ?????
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 9 juil. 2007 à 13:29
j'avais meme pas testé jusqu'au bout mais il y a des grosses erreurs
tes controls sont liés à une source de données il ne faut surtout pas !! sinon jamais tu ne pourras afficher quelque chose dedans lorsqu'ils sont liés
- ensuite il faut utiliser les events, tu abonnes chaque childform que tu crées depuis Mainform
- il faut que ce soit la mainform qui controle l'affichage et non les fenetres filles
voila cette fois je ne peux pas plus pour toi sinon reecrire l'appli (a la rigueur te l'envoyer par email vu que c'est assez rapide)
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 9 juil. 2007 à 11:22
Bon j'ai regardé ton code oulala que c'est mal programmé
bon voila un debut de tuyau qui marche mais l'organisation de l'appli est vraiment male fichue
en plus il faut afficher ta clé primaire dans le datagridview (enfin lol il me semble) ou au moins avoir un moyen de recuperer car comment veux tu modifier une ligne de ta table si tu ne peux meme pas recuperer cette ligne
Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click, DataGridViewArticle.DoubleClick
If NumRiag = 0 Then 'Verifi si une ligne a ete selectionner
Else
Select Case Action
Case "ModifierRefRiag"
'row = DataSet.Tables("Table_Article").Rows.Item(NumDataSetRiag)
''renvoi la ligne selectionner par un datarow "row" dans la fenetre GestionArticleModifier
Dim nID_Article As Integer = CInt(DataGridViewArticle.CurrentRow.Cells("Id_Article").Value)
Dim oDataRow As DataRow = DataSet.Table_Article.FindById_Article(nID_Article)
GestionArticleModifier.Recup_listeArticle(oDataRow)
End Select
Me.Close()
End If
End Sub
et pour afficher ici je n'affiche qu'un element mais pour le reste c'est la même chose
Sub Recup_listeArticle(ByVal row As DataSet.Table_ArticleRow)
Me.DataSet.Table_Article.Clear()
Me.DataSet.Table_Article.ImportRow(row)
'!!!!!! Problème les données du DataRow "row" ne s'affiche pas à l'ecran.
' Comment afficher a l'ecran les données de mon row ?????
28 juil. 2007 à 11:52
J'ai trouvé comment faire transferer la datarow même avec plusieurs fenêtres ouverte.
Code dans MdiParent pour ouvrir plusieurs fenêtres:
Dim ChildForm As New GestionArticleModifier
ChildForm.MdiParent = Me
m_ChildFormNumber += 1
ChildForm.Text = "Fenêtre " & m_ChildFormNumber
ChildForm.Tag = "Fenêtre " & m_ChildFormNumber
ChildForm.Show()
Code dans la fenêtre qui recupère le DataRow:
'Recupere la ligne de la table Article qui a ete selectionner dans la fentre Recherche_ListeArticle.vb
Sub Recup_listeArticle(ByVal row As DataSet.Table_ArticleRow, ByVal NomFenetre As String)
For Each ChildForm As GestionArticleModifier In My.Forms.MDIParent.MdiChildren
If ChildForm.Tag = NomFenetre Then
ChildForm.DataSet.Table_Article.Clear()
ChildForm.DataSet.Table_Article.ImportRow(row)
Exit For
End If
Next
End Sub
A+
14 juil. 2007 à 21:23
j'ai trouvé, il s'agit de faire afficher la fenêtre en simple affichage avec ce code
GestionArticleModifier.MdiParent = Me
m_ChildFormNumber += 1
GestionArticleModifier.Text = "Fenêtre " & m_ChildFormNumber
GestionArticleModifier.Show()
Mais pas en multi affichage
Dim ChildForm As New GestionArticleModifier
ChildForm.MdiParent = Me
m_ChildFormNumber += 1
ChildForm.Text = "Fenêtre " & m_ChildFormNumber
ChildForm.Show()
voila la solution été simple, mais pas évidente à trouver...
Dis moi si pour toi ROMAGNY si le code est correct.
A+
10 juil. 2007 à 13:49
sinon il existe encore une autre methode (qu'avait demontré Mitzu Furuta dans un Webcast)
en passant carrement le datacontext (il faudrait que je retrouve l'url du webcast), ce qui permet de faire du binding et entre les deux forms les deux etant synchronisées
bon si cette méthode est jolie en demonstration franchement jamais je l'utiliserais "en vrai" mais c'est bon a savoir
si je retrouve le lien je te le mets
10 juil. 2007 à 11:55
Voici mon email ecrie moi, et je te renverais l'appli si tu veux regarder.
A+
10 juil. 2007 à 07:16
Merci pour toutes ces explications.
En effet mon appli que j'ai mis sur le site est vraiment simple, c'est pour l'exemple que j'ai mis un truc simple.
Par contre si tu es d'accord je veux bien t'envoyer mon appli par mail, comme cela tu pourras voir l'ensemble.
Un truc bizarre c'est que sur mon appli, j'utilise 2 fois cette manip de passé un Datarow d'une fenetre à l'autre.
1 fois ça marche et la 2ème fois avec exactement le meme code ça ne marche pas !!!!!!
Hier soir j'ai tchaté sur Msn avec ThoT49 (http://www.vbfrance.com/auteurdetail.aspx?ID=997133), et lui aussi ne comprend pas pourquoi ça marche sur 1 et 2 pages, et apres dans le projet ça ne marche plus.
J'aimerais vraiement comprendre le truc ?????
9 juil. 2007 à 13:29
tes controls sont liés à une source de données il ne faut surtout pas !! sinon jamais tu ne pourras afficher quelque chose dedans lorsqu'ils sont liés
- ensuite il faut utiliser les events, tu abonnes chaque childform que tu crées depuis Mainform
- il faut que ce soit la mainform qui controle l'affichage et non les fenetres filles
tu peux regarder une source que j'avais posté il y a assez loongtemps mais te montrera comment utiliser les events en vb
http://www.vbfrance.com/codes/DEBUT-APPLICATION-GESTION-COMMERCIALE-TOUT-MODE-DECONNECTE-COUCHE_39683.aspx
voila cette fois je ne peux pas plus pour toi sinon reecrire l'appli (a la rigueur te l'envoyer par email vu que c'est assez rapide)
9 juil. 2007 à 11:22
bon voila un debut de tuyau qui marche mais l'organisation de l'appli est vraiment male fichue
en plus il faut afficher ta clé primaire dans le datagridview (enfin lol il me semble) ou au moins avoir un moyen de recuperer car comment veux tu modifier une ligne de ta table si tu ne peux meme pas recuperer cette ligne
Private Sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click, DataGridViewArticle.DoubleClick
If NumRiag = 0 Then 'Verifi si une ligne a ete selectionner
Else
Select Case Action
Case "ModifierRefRiag"
'row = DataSet.Tables("Table_Article").Rows.Item(NumDataSetRiag)
''renvoi la ligne selectionner par un datarow "row" dans la fenetre GestionArticleModifier
Dim nID_Article As Integer = CInt(DataGridViewArticle.CurrentRow.Cells("Id_Article").Value)
Dim oDataRow As DataRow = DataSet.Table_Article.FindById_Article(nID_Article)
GestionArticleModifier.Recup_listeArticle(oDataRow)
End Select
Me.Close()
End If
End Sub
et pour afficher ici je n'affiche qu'un element mais pour le reste c'est la même chose
Sub Recup_listeArticle(ByVal row As DataSet.Table_ArticleRow)
Me.DataSet.Table_Article.Clear()
Me.DataSet.Table_Article.ImportRow(row)
'!!!!!! Problème les données du DataRow "row" ne s'affiche pas à l'ecran.
' Comment afficher a l'ecran les données de mon row ?????
Designation_ArticleTextBox.Text = row("Designation_Article").ToString()
End Sub
un dernier conseil peut etre essayer d'utiliser les events
mais face une appli aussi simple/petite, mais aussi male fichue je ne sais plus lol