cs_naindjardin
Messages postés12Date d'inscriptionmardi 17 janvier 2006StatutMembreDernière intervention14 janvier 2011
-
20 juil. 2008 à 19:55
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 2008
-
21 juil. 2008 à 16:14
Bonjour,
Je suis en train de "dévelloper" un site internet (en ASP.NET), et j'aimerais améliorer le code, et peut-être même recommencer la conception d'une de mes pages en suivant les méthodes et conseils que vous pourrez me proccurer.
Il s'agit en faite d'une page présentant un calendrier sur lequel des événements, présents dans une base de donnée, vont s'afficher (un peu comme la vue par moi du calendrier d'outlook).
J'ai réussis à faire ce que je voulais, mais étant encore débutant, ma méthode n'est vraiment pas bonne. Ce qui fait que ma page est difficilement améliorable, que les performances de cette page doivent être médiocres ...
Si vous pouviez m'aider à refaire du code plus "simple" ou du moins mieux concus ce serait super.
(J'aimerais rajouter par la suite un "HoverMenuExtender" de l'AJAX Toolkit sur chaque évenements pour pouvoir afficher les détails de l'évenement survolé, mais c'est la que je cale!)
[Preview de la page]
<hr size= "2" width="100%" /> Code de ma page : (imbriqué dans une page maître)
<%
'Date à afficher (affiche le mois de cette date-ci)
Dim now As Date = now.Date
'Nombre de jours dans le mois
Dim daysInMonth As Integer = Date.DaysInMonth(now.Year, now.Month)
'Date du premier jour du mois
Dim first As New Date(now.Year, now.Month, 1)
'Jour de la semaine (pour pouvoir savoir le nombre de case vide à afficher sur la première ligne)
Dim firstDay As Integer = first.DayOfWeek
Dim i As Integer = -firstDay + 2 '(1 et 0)
Dim maConn As New Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Evenements.mdf;Integrated Security=True;User Instance=True")
'créer une connection et une commande
Dim maCommand As New Data.SqlClient.SqlCommand
'crée un reader pour parcourir les enregistrements trouvés
Dim reader As Data.SqlClient.SqlDataReader
'Tableau servant à stocker les 4 premiers éléments du jour
Dim Elements(3) As String
%>
----
<%=Format(now, "MMMM yyyy")%>
,
----
Lundi
,
Mardi
,
Mercredi
,
Jeudi
,
Vendredi
,
Samedi
,
Dimanche
,
<% While i <= daysInMonth%>
----
<% For d As Integer = 1 To 7%>
<% If i > 0 And i <= daysInMonth Then%>
'>
<%=i%>
<%
'ListElements stockent tous les éléments du jours
'ListElements stockent tous les éléments du lendemain
'--> Mauvaise idée car on va voir dans la base de donnée deux fois pour chaque jour
Dim ListElements, ListElementsDemain As New ArrayList
'Récupère les événements du lendemain
Dim actuDay As Date = New Date(now.Year, now.Month, i)
maConn.Open()
With maCommand
.CommandText = "SELECT Nom, ID FROM Evenements WHERE [dhDebut]<='" & actuDay.ToString & "' AND [dhFin]>='" & actuDay.ToString & "'"
.CommandType = Data.CommandType.Text
.Connection = maConn
'exécuter la commande
reader = .ExecuteReader()
End With
'On remplit une liste des éléments journaliers
While reader.Read()
'récupère le "nom" des événements
ListElements.Add(reader("Nom").ToString)
End While
maConn.Close()
'On passe au lendemain
actuDay = actuDay.AddDays(1)
maConn.Open()
With maCommand
.CommandText = "SELECT Nom, ID FROM Evenements WHERE [dhDebut]<='" & actuDay.ToString & "' AND [dhFin]>='" & actuDay.ToString & "'"
.CommandType = Data.CommandType.Text
.Connection = maConn
'exécuter la commande
reader = .ExecuteReader()
End With
'On remplit une liste des éléments journaliers
While reader.Read()
ListElementsDemain.Add(reader("Nom").ToString)
End While
maConn.Close()
'Tableau des Elements à Afficher pour ne pas avoir de répétition des titres
' pour afficher les icones de début et de fin
Dim ElementsAffiches(3, 1) As String
'On Vide les anciennes cellules inutiles (celles du jours précédant)
For c As Integer = 0 To 3
If Not ListElements.Contains(Elements(c)) Then
Elements(c) = Nothing
End If
Next
'On replace les nouvelles
For l As Integer = 0 To ListElements.Count - 1
If Array.IndexOf(Elements, ListElements.Item(l).ToString) = -1 Then
For c As Integer = 0 To 3
If Elements(c) = Nothing Then
Elements(c) = ListElements.Item(l).ToString
ElementsAffiches(c, 0) = Elements(c)
'pour dire que c'est le début de l'évenement
ElementsAffiches(c, 1) = "Deb"
Exit For
End If
Next
Else
'Vérifie si on est lundi pour reafficher les entetes (quand on est passé à la ligne suivante pour plus de clareté
ofonadroite
Messages postés130Date d'inscriptionmercredi 25 juin 2008StatutMembreDernière intervention13 août 20082 21 juil. 2008 à 16:14
Ouarf !
Pour commencer, si tu veux devenir le roi de la prog. on dit "developper" avec 1 "l" et 2 "p" sinon ça s'envole
Ensuite ton code est super lourd, tu n'a pas à nous préciser le CSS par exemple.
Pourrais tu expliquer plus précisement ce que tu recherche ?
Merci
<hr />
Si une réponse vous convient n'oubliez pas le réponse acceptée !!!
Ca aidera beaucoup d'autres personnes