Filtrer donées dans un datagridview

Fermé
poupou61 Messages postés 61 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 18 janvier 2013 - 17 févr. 2012 à 11:45
 Utilisateur anonyme - 1 mars 2012 à 17:26
Bonjour,

J'ai un datagridview qui affiche les données sur les commandes, et j'aimerais pouvoir "filtrer" l'affichage de ces données dans le datagridview grâce à une combobox contenant les raisons sociales des fournisseurs. et donc quand je sélectionne un fournisseur das ma combobox qu'il n'y ai que les commandes de ce fournisseur qui s'affichent dans le datagridview.

Pour l'instant, ma requête SQL pour afficher tout les fournisseurs c'est :

SELECT Contenir_Commande.NumCommande, Contenir_Commande.NumProduit, Contenir_Commande.QuantiteCommander, Commande.DateCommmande, Fournisseur.RaisonSocialeFour 
FROM ((Contenir_Commande INNER JOIN 
Commande ON Contenir_Commande.NumCommande = Commande.NumCommande) INNER JOIN 
Fournisseur ON Commande.Numfournisseur = Fournisseur.NumFour)


Et donc je suppose qu'il faut faire un truc du genre : "WHERE RaisonSocialeFour = ..." et que le "..." il faut le replacer dans le code et faire quelque chose avec ?

Petite contrainte supplémentaire, j'ai des boutons radio qui me sélectionnent les années des commandes. donc j'ai un bouton radio "2010" par exemple et la il n'y a que les commandes passées en 2010 qui s'afficheront, sa fonctionne très bien sa, mais j'ai peur que la combo et les boutons radio ensemble sa ne marche pas. Je me trompe ou pas ??

Ma requête et le code pour les boutons Radio :

SELECT        Contenir_Commande.NumCommande, Contenir_Commande.NumProduit, Contenir_Commande.QuantiteCommander, Commande.DateCommmande, 
                         Fournisseur.RaisonSocialeFour
FROM            ((Contenir_Commande INNER JOIN
                         Commande ON Contenir_Commande.NumCommande = Commande.NumCommande) INNER JOIN
                         Fournisseur ON Commande.Numfournisseur = Fournisseur.NumFour)
WHERE        (Commande.DateCommmande BETWEEN #1/1/2010# AND #12/31/2010#)


Private Sub RdBtn2010_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RdBtn2010.CheckedChanged
        Contenir_CommandeTableAdapter1.FillBy2010(MonDataSet1.Contenir_Commande)
        DGVCde.DataSource = MonDataSet1.Contenir_Commande
    End Sub


Je bosse avec un dataset (je sais pas si sa change quelque chose, mais bon...

Désolé c'est un peu long.

Merci d'avance

3 réponses

poupou61 Messages postés 61 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 18 janvier 2013
1 mars 2012 à 10:52
up
0
Utilisateur anonyme
1 mars 2012 à 13:29
Bonjour,

Une solution serait de convertir ton dataset en collection
et d'appliquer les méthodes Linq (VB2008 et 2010)

Public Class Test

Sub Affiche()

    Dim MaCollection as List(Of MonObjet)
    Dim CollectionPartiel as List(Of MonObjet)

    MaCollection = ConvertirDataSet(MonDataSet1)

    CollectionPartiel = (From objX In MaCollection Select objX Where objX.Raison = combobox1.Text Order By objX.Name).ToList

    DGVCde.DataSource = GetType(MonObjet)
    DGVCde.DataSource = CollectionPartiel

End Sub

Function ConvertirDataset(ByVal LeDataSet as DataSet) As List(Of MonObjet)

'...

End Function

End Class

Public Class MonObjet

Private zNom As String
Private zRaison as string
'...

Public Property Nom() As String
    Get
        Return Me.zNom
    End Get
    Set(ByVal value As String)
        Me.zNom = value
    End Set
End Property

Public Property Raison() As String
    Get
        Return Me.zRaison
    End Get
    Set(ByVal value As String)
        Me.zRaison = value
    End Set
End Property

'...

End Class


Cdt

Lupin
0
Utilisateur anonyme
1 mars 2012 à 17:26
re:

L'évènement ComboBox_SelectedIndexChanged ressemblera à ceci :

Private Sub cbx_Raison_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbx_Raison.SelectedIndexChanged

	If (Not (String.IsNullOrEmpty(Me.cbx_Raison.Text))) Then
		Dim ListePartiel As List(Of MonObjet)
		Dim Raison As String = Me.cbx_Raison.Text.ToUpper
		ListePartiel = (From EntY As MonObjet In ListeLocale Select EntY Where EntY.Raison.ToUpper = Raison).ToList
		Me.DGV_Sortie.DataSource = Nothing
		InitialiseDGV(Me.DGV_Sortie)
		Me.DGV_Sortie.DataSource = ListePartiel
	Else
		Me.DGV_Sortie.DataSource = Nothing
		InitialiseDGV(Me.DGV_Sortie)
		Me.DGV_Sortie.DataSource = ListeLocale
	End If

End Sub


Cdt

Lupin
0