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