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)
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 : 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
Code de l'EditCommandColumn :
Ce code fonctionne quand la DataGrid affiche la vue globale.
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
4 - un bouton Filtrer qui filtre le contenu du DataGrid en focntion du contenu du DropDownList avec le code suivant :
Voilà mon souci :
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)
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
Partager