[WEB] Afficher un gridview dans un contrôle utilisateur
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 :
Code:
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> |
Le code Behind :
Code:
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 |
Et comment je l'utilise :
Code:
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 |
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.
Merci d'avance.