IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Filtrer un datagrid


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 76
    Par défaut Filtrer un datagrid
    Bonjour,

    Après plusieurs recherche sur le forum et sur le net, je n'ai pas trouvé la solution.

    Explication :

    1 - J'ai une page aspx qui contient un DropDowList, un DataGrid et un Bouton (Filtrer)
    2 - je rempli mon DropDownList au Page_load avec des données extraites d'une base SQL (aucun souci)
    3 - mon Datagrid est rempli aussi au Page_Load avec des données extraites d'une base SQL (aucun souci). vue globale du contenu d'une table.

    Code de remplissage (2 et 3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Placez ici le code utilisateur pour initialiser la page
            Me.T_Util.Text = Session("CLT")
            Dim mySelectQuery As String
            mySelectQuery = "SELECT dbo.LEAD_EXTRANET.[ORIGINE APPEL], dbo.LEAD_EXTRANET.VU "
            mySelectQuery = mySelectQuery + " FROM dbo.LEAD_EXTRANET "
            mySelectQuery = mySelectQuery + " WHERE dbo.LEAD_EXTRANET.PROFIL_CLT = '" + Me.T_Util.Text + "' AND (dbo.LEAD_EXTRANET.VU is null) "
            mySelectQuery = mySelectQuery + " GROUP BY dbo.LEAD_EXTRANET.[ORIGINE APPEL], dbo.LEAD_EXTRANET.VU"
            If Not IsPostBack Then
                init_DropDownList(mySelectQuery, D_CAMPAGNE, "ORIGINE APPEL")
                D_CAMPAGNE.Items.Insert(0, "Campagne")
            End If
     
            Dim strsql As String
            If Not IsPostBack Then
                strsql = "SELECT     TOP 100 PERCENT dbo.LEAD_EXTRANET.NAPPEL AS Numéro, "
                strsql = strsql + " dbo.LEAD_EXTRANET.SOCIETE AS SOCIETE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CODE_POSTAL AS CP, dbo.LEAD_EXTRANET.VILLE AS VILLE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CIVILITE AS CIVILITE, dbo.LEAD_EXTRANET.[NOM CONTACT] AS NOMCONTACT, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[PRENOM] AS Prénom,dbo.LEAD_EXTRANET.[FONCTION] AS FONCTION, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[DERNIER APPEL] AS DATE, dbo.LEAD_EXTRANET.[RESULTAT APPEL] AS PROJET "
                strsql = strsql + " FROM dbo.LEAD_EXTRANET "
                strsql = strsql + " WHERE dbo.LEAD_EXTRANET.PROFIL_CLT = '" + Me.T_Util.Text + "' AND (dbo.LEAD_EXTRANET.VU is null)  "
                strsql = strsql + " ORDER BY dbo.LEAD_EXTRANET.NAPPEL "
                ''AND dbo.LEAD_EXTRANET.[ORIGINE APPEL]  = '" + Me.D_CAMPAGNE.SelectedValue + "'
                Me.BindDataUser(strsql)
            Else
                strsql = "SELECT     TOP 100 PERCENT dbo.LEAD_EXTRANET.NAPPEL AS Numéro, "
                strsql = strsql + " dbo.LEAD_EXTRANET.SOCIETE AS SOCIETE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CODE_POSTAL AS CP, dbo.LEAD_EXTRANET.VILLE AS VILLE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CIVILITE AS CIVILITE, dbo.LEAD_EXTRANET.[NOM CONTACT] AS NOMCONTACT, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[PRENOM] AS Prénom,dbo.LEAD_EXTRANET.[FONCTION] AS FONCTION, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[DERNIER APPEL] AS DATE, dbo.LEAD_EXTRANET.[RESULTAT APPEL] AS PROJET "
                strsql = strsql + " FROM dbo.LEAD_EXTRANET "
                strsql = strsql + " WHERE dbo.LEAD_EXTRANET.PROFIL_CLT = '" + Me.T_Util.Text + "' AND (dbo.LEAD_EXTRANET.VU is null)  "
                strsql = strsql + " ORDER BY dbo.LEAD_EXTRANET.NAPPEL "
                Me.BindDataUser(strsql)
            End If
        End Sub
     
        Sub init_DropDownList(ByVal requete As String, ByRef ld As DropDownList, ByVal TextField As String)
            Dim myConnString As String
            Dim strSql As String
     
            'Chaine de connection a la base de donnees.
            myConnString = System.Configuration.ConfigurationSettings.AppSettings("Connectionstring2")
            Dim myConnection As New SqlConnection(myConnString)
            myConnection.Open()
            Dim MyCommand As New SqlDataAdapter(requete, myConnection)
            Dim DS As DataSet = New DataSet
            MyCommand.Fill(DS, "temp")
            ld.DataSource = DS.Tables("temp").DefaultView
            ld.DataTextField = TextField
            'ld.DataValueField = ValueField
            ld.DataBind()
            myConnection.Close()
        End Sub
     
        Private Sub BindDataUser(ByVal requete As String)
            Dim oDS As DataSet = L_CLIENT.getUser(requete)
            Datagrid1.DataSource = oDS.Tables(0).DefaultView
            Datagrid1.DataKeyField = "Numéro"
            Datagrid1.DataBind()
        End Sub
    Dans ce Datagrid, j'ai une colonne EditCommandColumn qui me permet d'ouvrir le détail de la ligne sélectionnée dans un document Word.

    Code de l'EditCommandColumn :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
        Private Sub DataGrid1_EditCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles Datagrid1.EditCommand
            'Session("NAPPEL") = e.Item.Cells(1).Text()
            'Response.Redirect("L_CONS_CLIENT.aspx")
            'charge(e)
     
            Dim myConnString As String = System.Configuration.ConfigurationSettings.AppSettings("Connectionstring2")
            Dim myConnection As New SqlConnection(myConnString)
            Dim vDate As String = DateTime.Now.ToShortDateString
            Dim sSQL As String
            sSQL = "UPDATE LEAD_EXTRANET SET VU = 'OUI' , "
            sSQL = sSQL + " DTEVU = '" + vDate + "', "
            sSQL = sSQL + " QUIVU = '" + Me.T_Util.Text + " '"
            sSQL = sSQL + " WHERE NAPPEL = '" + e.Item.Cells(1).Text() + "'"
            Dim myCommand As New SqlCommand(sSQL, myConnection)
            myConnection.Open()
            myCommand.ExecuteNonQuery()
            myConnection.Close()
     
            Dim fichier As String = e.Item.Cells(4).Text() + "_" + e.Item.Cells(7).Text() + ".doc"
            Dim dos As String = Server.MapPath("/INTRA_RH/") & "DOCS/"
            Dim fichier_info As New System.IO.FileInfo(dos & fichier)
            Response.Clear()
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + fichier_info.Name)
            Response.AppendHeader("content-lenght", fichier_info.Length.ToString())
            Response.ContentType = "application/msword"
            Response.Flush()
            Response.WriteFile(fichier_info.FullName)
            Response.End()
        End Sub
    Ce code fonctionne quand la DataGrid affiche la vue globale.

    4 - un bouton Filtrer qui filtre le contenu du DataGrid en focntion du contenu du DropDownList avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Private Sub Btn_FILTRER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_FILTRER.Click
            Dim strsql As String
            strsql = "SELECT     TOP 100 PERCENT dbo.LEAD_EXTRANET.NAPPEL AS Numéro, "
            strsql = strsql + " dbo.LEAD_EXTRANET.SOCIETE AS SOCIETE, "
            strsql = strsql + " dbo.LEAD_EXTRANET.CODE_POSTAL AS CP, dbo.LEAD_EXTRANET.VILLE AS VILLE, "
            strsql = strsql + " dbo.LEAD_EXTRANET.CIVILITE AS CIVILITE, dbo.LEAD_EXTRANET.[NOM CONTACT] AS NOMCONTACT, "
            strsql = strsql + " dbo.LEAD_EXTRANET.[PRENOM] AS Prénom,dbo.LEAD_EXTRANET.[FONCTION] AS FONCTION, "
            strsql = strsql + " dbo.LEAD_EXTRANET.[DERNIER APPEL] AS DATE, dbo.LEAD_EXTRANET.[RESULTAT APPEL] AS PROJET "
            strsql = strsql + " FROM dbo.LEAD_EXTRANET "
            strsql = strsql + " WHERE dbo.LEAD_EXTRANET.PROFIL_CLT = '" + Me.T_Util.Text + "' AND (dbo.LEAD_EXTRANET.VU is null) AND dbo.LEAD_EXTRANET.[ORIGINE APPEL]  = '" + Me.D_CAMPAGNE.SelectedValue + "' "
            strsql = strsql + " ORDER BY dbo.LEAD_EXTRANET.NAPPEL "
            Me.BindDataUser(strsql)
    Voilà mon souci :
    après avoir filtrer le Datagrid, quand je clique VOIR 'EditCommandColumn', je n'arrive pas à afficher le bon word. le word affiché correspond à la ligne qui a le même rang dans la vue globale.

    Comment pourrais-je faire pour afficher le bon word.

    Merci pour votre aide.

    Imad

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Qd tu cliques sur ton bouton edit, tu repasses dans le OnLoad et donc tu réaffiches un datagrid non filtré

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 76
    Par défaut
    le datagrid, affiche bien les lignes du cirtère choisie.
    donc d'après toi, comment dois-je faire ?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 76
    Par défaut Filtrer un datagrid (je suis dans l'impasse)
    SVP, je n'arrive pas à résoudre le problème.

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Fais un test:
    Dans ta fonction DataGrid1_EditCommand, tu mets tout en commentaire.
    Tu compiles, tu affiches ta page, tu filtres puis tu cliques sur ton bouton edit.
    Ta page va se recharger, est-ce que ton datagrid est toujours filtré?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 76
    Par défaut
    Merci beucoup.
    sinon, j'ai trouvé d'où ça venait, en fait dans le Page_Load, au test du IsPostBack, j'exécutais la même requête alors qu'il ne fallait pas.
    voici le correctif dans le Page_Load :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
            If Not IsPostBack Then
                strsql = "SELECT     TOP 100 PERCENT dbo.LEAD_EXTRANET.NAPPEL AS Numéro, "
                strsql = strsql + " dbo.LEAD_EXTRANET.SOCIETE AS SOCIETE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CODE_POSTAL AS CP, dbo.LEAD_EXTRANET.VILLE AS VILLE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CIVILITE AS CIVILITE, dbo.LEAD_EXTRANET.[NOM CONTACT] AS NOMCONTACT, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[PRENOM] AS Prénom,dbo.LEAD_EXTRANET.[FONCTION] AS FONCTION, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[DERNIER APPEL] AS DATE, dbo.LEAD_EXTRANET.[RESULTAT APPEL] AS PROJET "
                strsql = strsql + " FROM dbo.LEAD_EXTRANET "
                strsql = strsql + " WHERE dbo.LEAD_EXTRANET.PROFIL_CLT = '" + Me.T_Util.Text + "' AND (dbo.LEAD_EXTRANET.VU is null)  "
                strsql = strsql + " ORDER BY dbo.LEAD_EXTRANET.NAPPEL "
                ''AND dbo.LEAD_EXTRANET.[ORIGINE APPEL]  = '" + Me.D_CAMPAGNE.SelectedValue + "'
                Me.BindDataUser(strsql)
            Else
                strsql = "SELECT     TOP 100 PERCENT dbo.LEAD_EXTRANET.NAPPEL AS Numéro, "
                strsql = strsql + " dbo.LEAD_EXTRANET.SOCIETE AS SOCIETE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CODE_POSTAL AS CP, dbo.LEAD_EXTRANET.VILLE AS VILLE, "
                strsql = strsql + " dbo.LEAD_EXTRANET.CIVILITE AS CIVILITE, dbo.LEAD_EXTRANET.[NOM CONTACT] AS NOMCONTACT, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[PRENOM] AS Prénom,dbo.LEAD_EXTRANET.[FONCTION] AS FONCTION, "
                strsql = strsql + " dbo.LEAD_EXTRANET.[DERNIER APPEL] AS DATE, dbo.LEAD_EXTRANET.[RESULTAT APPEL] AS PROJET "
                strsql = strsql + " FROM dbo.LEAD_EXTRANET "
                strsql = strsql + " WHERE dbo.LEAD_EXTRANET.PROFIL_CLT = '" + Me.T_Util.Text + "' AND (dbo.LEAD_EXTRANET.VU is null) AND dbo.LEAD_EXTRANET.[ORIGINE APPEL]  = '" + Me.D_CAMPAGNE.SelectedValue + "' "
                strsql = strsql + " ORDER BY dbo.LEAD_EXTRANET.NAPPEL "
                Me.BindDataUser(strsql)
            End If
        End Sub
    j'ai rajouté un troisième critère dans le Else.

    il fallait que je sorte fumer une clope pour trouver /

    En tout cas merci pour ta réactivité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtrer un datagrid WPF avec une textbox
    Par TheRafal dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 30/12/2012, 15h20
  2. [Flex3] Filtrer datagrid avec text à partir de MySQL
    Par fabiofabio dans le forum Flex
    Réponses: 11
    Dernier message: 31/08/2010, 11h16
  3. Filtrer un datagrid à partir d'une texte box
    Par Pwouaro dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/07/2008, 16h26
  4. Réponses: 1
    Dernier message: 14/07/2008, 08h28
  5. Réponses: 3
    Dernier message: 12/07/2006, 09h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo