Il est souvent pratique dans des projets internes de faire des statistiques sur des réponses (par exemple dans le cadre d'un sondage), en gros savoir combien de personne a choisi telle réponse.
Mais il est encore mieu de pouvoir faire un petit graphique qui donne une idée générale très rapidement (un petit histogramme simple).
Je vous fourni donc un petit exemple simple sous forme de User Control avec 5 réponses que vous pouvez adapter à loisir dans vos propres projets.
Source / Exemple :
' Code source du fichier ASCX
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="GraphRepartition.ascx.vb" Inherits="MonProjet.GraphRepartition" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<TABLE id="GraphRepartition" height="30" cellSpacing="1" cellPadding="1" width="50" border="0" runat="server">
<TR>
<TD vAlign="bottom" align="middle" width="10" height="30"><asp:image id="ImageVal5" runat="server" Width="10" ImageUrl="/MonProjet/images/BaseGraph5.gif"></asp:image></TD>
<TD vAlign="bottom" align="middle" width="10" height="30"><asp:image id="ImageVal4" runat="server" Width="10" ImageUrl="/MonProjet/images/BaseGraph4.gif"></asp:image></TD>
<TD vAlign="bottom" align="middle" width="10" height="30"><asp:image id="ImageVal3" runat="server" Width="10" ImageUrl="/MonProjet/images/BaseGraph3.gif"></asp:image></TD>
<TD vAlign="bottom" align="middle" width="10" height="30"><asp:image id="ImageVal2" runat="server" Width="10" ImageUrl="/MonProjet/images/BaseGraph2.gif"></asp:image></TD>
<TD vAlign="bottom" align="middle" width="10" height="30"><asp:image id="ImageVal1" runat="server" Width="10" ImageUrl="/MonProjet/images/BaseGraph1.gif"></asp:image></TD>
</TR>
</TABLE>
' ------------------------------------------------
' Code Source ASCX.VB
Public MustInherit Class GraphRepartition
Inherits System.Web.UI.UserControl
Protected WithEvents ImageVal5 As System.Web.UI.WebControls.Image
Protected WithEvents ImageVal3 As System.Web.UI.WebControls.Image
Protected WithEvents ImageVal2 As System.Web.UI.WebControls.Image
Protected WithEvents ImageVal1 As System.Web.UI.WebControls.Image
Protected WithEvents ImageVal4 As System.Web.UI.WebControls.Image
Private _HauteurMax As Integer = 50
Private _val5 As Integer = 0
Private _val4 As Integer = 0
Private _val3 As Integer = 0
Private _val2 As Integer = 0
Private _val1 As Integer = 0
Private _NbReponses As Integer = 1
#Region "Liste des Propriétées Publiques"
Public Property HauteurMax() As String
Get
Return _HauteurMax
End Get
Set(ByVal Value As String)
_HauteurMax = Value
End Set
End Property
Public Property Val5() As String
Get
Return _val5
End Get
Set(ByVal Value As String)
_val5 = Value
End Set
End Property
Public Property Val4() As String
Get
Return _val4
End Get
Set(ByVal Value As String)
_val4 = Value
End Set
End Property
Public Property Val3() As String
Get
Return _val3
End Get
Set(ByVal Value As String)
_val3 = Value
End Set
End Property
Public Property Val2() As String
Get
Return _val2
End Get
Set(ByVal Value As String)
_val2 = Value
End Set
End Property
Public Property Val1() As String
Get
Return _val1
End Get
Set(ByVal Value As String)
_val1 = Value
End Set
End Property
Public Property NbReponses() As String
Get
Return _NbReponses
End Get
Set(ByVal Value As String)
If Value <> 0 Then
_NbReponses = Value
End If
End Set
End Property
#End Region
#Region " Code généré par le Concepteur Web Form "
'Cet appel est requis par le Concepteur Web Form.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
'Ne le modifiez pas en utilisant l'éditeur de code.
InitializeComponent()
End Sub
#End Region
' -----------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ImageVal5.Style.Add("height", Math.Round(((_val5 * _HauteurMax) / _NbReponses), 0))
ImageVal4.Style.Add("height", Math.Round(((_val4 * _HauteurMax) / _NbReponses), 0))
ImageVal3.Style.Add("height", Math.Round(((_val3 * _HauteurMax) / _NbReponses), 0))
ImageVal2.Style.Add("height", Math.Round(((_val2 * _HauteurMax) / _NbReponses), 0))
ImageVal1.Style.Add("height", Math.Round(((_val1 * _HauteurMax) / _NbReponses), 0))
End Sub
' -----------------------------------------------------
End Class
' ------------------------------------------------
' Appel simple depuis un Datagrid
<asp:TemplateColumn HeaderText="" ItemStyle-Width="50">
<ItemTemplate>
<uc1:GraphRepartition
id="GraphRepartition1" runat="server"
Val5='<%# CType(DataBinder.Eval(Container.DataItem,"NbReponse5"), integer)%>'
Val4='<%# Ctype(DataBinder.Eval(Container.DataItem,"NbReponse4"), integer)%>'
Val3='<%# Ctype(DataBinder.Eval(Container.DataItem,"NbReponse3"), integer)%>'
Val2='<%# Ctype(DataBinder.Eval(Container.DataItem,"NbReponse2"), integer)%>'
Val1='<%# Ctype(DataBinder.Eval(Container.DataItem,"NbReponse1"), integer)%>'
NbReponses= '<%# Ctype(DataBinder.Eval(Container.DataItem,"NbReponseTotal"), integer)%>'
HauteurMax='50'>
</uc1:GraphRepartition>
</asp:Image>
</ItemTemplate>
</asp:TemplateColumn>
Conclusion :
Bon Coding
Romelard Fabrice (Alias F___)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.