Bonjour,
Je me heurte à un problème de génération d'un GridView.
En effet, je dispose d'un gridView qui est lié à une base de donnée et donc à une requête. Cette requête a besoin de 3 paramètres pour renvoyer le résultat escompté.
Seulement, ce gridview est placé dans un Contrôle utilisateur et je ne sais pas comment faire en sorte qu'il me renvoie le résultat car je n'arrive pas à lui donner les valeurs des paramètres. Le contrôle utilisateur est bien affiché mais je n'ai pas le gridview étant donné que pour lui, cette requête ne renvoie pas de données (la requête fonctionne : vérifié)
Donc voici le code design de mon Contrôle utilisateur :
Le code Behind :
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 <%@ Control Language="VB" AutoEventWireup="false" ClassName="CtrlStat" CodeFile="CtrlStat.ascx.vb" Inherits="CtrlStat" %> <asp:Table ID="tblInfo" runat="server"> <asp:TableRow> <asp:TableCell Width="80">Utilisateur : </asp:TableCell> <asp:TableCell ID="CellUtilisateur" Width="250"></asp:TableCell> <asp:TableCell Width="165">Nombre de demandes : </asp:TableCell> <asp:TableCell ID="CellNbDemandes" Width="250"></asp:TableCell> </asp:TableRow> </asp:Table> <asp:GridView ID="GVListeDemandes" runat="server" AutoGenerateColumns="False" DataSourceID="ADSListeDemandes" Width="753px"> <Columns> <asp:BoundField DataField="DEMId" HeaderText="Numéro demande" SortExpression="DEMId" /> <asp:BoundField DataField="DEMTitre" HeaderText="Titre demande" SortExpression="DEMTitre" /> <asp:BoundField DataField="TYPINTERLibelle" HeaderText="Type intervention" SortExpression="TYPINTERLibelle" /> <asp:BoundField DataField="DEMDate" DataFormatString="{0:dd/MM/yyyy}" HeaderText="Date demande" SortExpression="DEMDate" /> </Columns> </asp:GridView> <asp:AccessDataSource ID="ADSListeDemandes" runat="server" DataFile="~/App_Data/IncidentENSAM.mdb" SelectCommand="SELECT DEMANDE.DEMId, DEMANDE.DEMTitre, TYPEINTERVENTION.TYPINTERLibelle, DEMANDE.DEMDate FROM (DEMANDE INNER JOIN TYPEINTERVENTION ON DEMANDE.DEMTypeIntervention = TYPEINTERVENTION.TYPINTERId) WHERE DEMDate BETWEEN FORMAT(#?#,'mm/dd/yyyy') AND FORMAT(#?#,'mm/dd/yyyy') AND DEMUtilisateur=?"> <SelectParameters> <asp:Parameter Name="?" DefaultValue="<% Response.Write(s_DateDebut) %>"/> <asp:Parameter Name="?" DefaultValue="<% Response.Write(s_DateFin) %>" /> <asp:Parameter Name="?" DefaultValue="<% Response.Write(s_Utilisateur) %>" /> </SelectParameters> </asp:AccessDataSource>
Et comment je l'utilise :
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
66
67
68
69 Imports System.DirectoryServices Imports System.Web.Configuration Imports System.Data.OleDb Partial Class CtrlStat Inherits System.Web.UI.UserControl Protected s_Utilisateur, s_DateDebut, s_DateFin As String Private o_SI As SI Public Sub New() End Sub Protected Sub Initialisation(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init If o_SI.Connexion.State = Data.ConnectionState.Closed Then o_SI.Connexion.Open() Dim o_Exec As OleDbCommand Dim s_requete As String s_requete = "SELECT COUNT(*) " s_requete = s_requete & "FROM (DEMANDE INNER JOIN TYPEINTERVENTION ON DEMANDE.DEMTypeIntervention = TYPEINTERVENTION.TYPINTERId) " s_requete = s_requete & "WHERE DEMDate BETWEEN FORMAT(#" & s_DateDebut & "#,""mm/dd/yyyy"") AND FORMAT(#" & s_DateFin & "#,""mm/dd/yyyy"") " s_requete = s_requete & "AND (DEMANDE.DEMUtilisateur = '" & s_Utilisateur & "')" o_Exec = New OleDbCommand(s_requete, o_SI.Connexion) Dim o_AD As New ActiveDirectory(WebConfigurationManager.AppSettings("ActiveDirectoryServeur"), _ WebConfigurationManager.AppSettings("ActiveDirectoryLogin"), _ WebConfigurationManager.AppSettings("ActiveDirectoryPassword")) CellUtilisateur.Text = String.Concat(o_AD.NomComplet(s_Utilisateur), " (", s_Utilisateur, ")") CellNbDemandes.Text = o_Exec.ExecuteScalar End Sub Public Property Utilisateur() As String Get Return s_Utilisateur End Get Set(ByVal value As String) s_Utilisateur = value End Set End Property Public Property DateDebut() As String Get Return s_DateDebut End Get Set(ByVal value As String) s_DateDebut = value End Set End Property Public Property DateFin() As String Get Return s_DateFin End Get Set(ByVal value As String) s_DateFin = value End Set End Property Public Property SI() As SI Get Return o_SI End Get Set(ByVal value As SI) o_SI = value End Set End Property End Class
Cela fait plusieurs fois que je me heurte à ce type de problème et je n'ai, pour le moment, toujours pas trouvé de solution malgré le fait d'avoir cherché pendant plusieurs heures.
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 s_Requete = "SELECT COUNT(*) FROM (SELECT DISTINCT DEMUtilisateur FROM DEMANDE WHERE DEMDate BETWEEN FORMAT(#" & s_DateDeb & "#,""mm/dd/yyyy"") AND FORMAT(#" & s_DateFin & "#,""mm/dd/yyyy"") GROUP BY DEMUtilisateur)" o_Exec.CommandText = s_Requete i_NbUtilisateurs = CInt(o_Exec.ExecuteScalar) s_Requete = "SELECT DISTINCT DEMUtilisateur FROM DEMANDE WHERE DEMDate BETWEEN FORMAT(#" & s_DateDeb & "#,""mm/dd/yyyy"") AND FORMAT(#" & s_DateFin & "#,""mm/dd/yyyy"")" o_Exec.CommandText = s_Requete Dim RDRUtilisateur As OleDbDataReader RDRUtilisateur = o_Exec.ExecuteReader ' On remplit les labels lblNombreDemandes.Text = i_NbDemandes lblNombreUtilisateur.Text = i_NbUtilisateurs lblDateDebut.Text = s_DateDeb lblDateFin.Text = s_DateFin ' On parcours les utilisateurs While RDRUtilisateur.Read Dim o_Stat As New CtrlStat o_Stat = o_Stat.LoadControl("~/Controls/CtrlStat.ascx") o_Stat.SI = o_SI o_Stat.Utilisateur = RDRUtilisateur.GetString(0) o_Stat.DateDebut = s_DateDeb o_Stat.DateFin = s_DateFin PHStats.Controls.Add(o_Stat) End While
Merci d'avance.
Partager