Problème de génération de tableaux
Bonjour !
Je me permet de poser cette question ici, bien que ce n'est pas vraiment du VB.NET qui me pose problème.
Je travaille sous VS 2005 en VB.NET (ASP.NET)
J'aimerais créer un emploi du temps, donc j'ai du faire un tableau (<table>).
Seulement, comme je vais chercher mes infos dans une base de données, je dois créer le tableau ligne par ligne, et non colonne par colonne. J'ai donc générer 8 tableaux différents, un pour les heures, et un par jour de la semaine.
J'ai réussi à aligner le tableau avec les heures avec les autres tableaux, tout est nickel de ce coté.
Comme une matière couvre une tranche horaire, (les jours sont divisés par tranche de 10 minutes) j'ai donc calculé un rowspan en fonction de la durée de cette matière.
Premier problème : le rowspan génère une seconde colonne, toute petite.
Second problème : à cause du rowspan et de cette colonne, si une matière en suit une autre le même jour, celle-ci se retrouve dans la colonne qui n'a pas lieu d'être.
Voici mon code qui permet de générer le tableau. Il se situe dans le load de la page :
l'objet unEdt représente une tranche horaire, l'objet uneMat une matière et l'objet unMut représente la relation entre un prof et une matière.
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
Dim passage As Boolean = False
Session("tableaulundi") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Lundi<br /><span style=""font-size:12px""> </span></td></tr>"
Session("tableaumardi") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Mardi<br /><span style=""font-size:12px""> </span></td></tr>"
Session("tableaumercredi") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Mercredi<br /><span style=""font-size:12px""> </span></td></tr>"
Session("tableaujeudi") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Jeudi<br /><span style=""font-size:12px""> </span></td></tr>"
Session("tableauvendredi") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Vendredi<br /><span style=""font-size:12px""> </span></td></tr>"
Session("tableausamedi") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Samedi<br /><span style=""font-size:12px""> </span></td></tr>"
Session("tableaudimanche") = "<table class=""edt"" style=""display:inline; border-collapse:collapse; border:1px solid black; vertical-align:top""><tr><td style=""border-collapse:collapse; border:1px solid black; font-size:11px"">Dimanche<br /><span style=""font-size:12px""> </span></td></tr>"
Dim premierpassagelundi As Boolean = True
Dim premierpassagemardi As Boolean = True
Dim premierpassagemercredi As Boolean = True
Dim premierpassagejeudi As Boolean = True
Dim premierpassagevendredi As Boolean = True
Dim premierpassagesamedi As Boolean = True
Dim premierpassagedimanche As Boolean = True
While reader.Read
If Not passage Then
'***************************************************************************
'***************************************************************************
LabelApercu.Text = "<table style=""display:inline; border-collapse:collapse; text-align:right; vertical-align:top; width:10%"">" & _
"<tr><td style=""border-collapse:collapse; height:9px; padding-top:5px""><span style=""height:10px""> </span></td></tr>" & _
"<tr><td style=""display:block; border-collapse:collapse; font-size:10px; font-weight:bold; padding-top:5px"">8h30 __<br /><span style=""height:12px""> </span></td></tr>" & _
"<tr><td style=""display:block; border-collapse:collapse; font-size:10px; font-weight:bold; padding-top:5px"">8h40 __<br /><span style=""height:12px""> </span></td></tr>" & _
"<tr><td style=""display:block; border-collapse:collapse; font-size:10px; font-weight:bold; padding-top:5px"">8h50 __<br /><span style=""height:12px""> </span></td></tr>"
'Ce code me permet de générer le premier tableau, avec les horaires, de 8h30 à 18h50, par tranche de 10 minutes
Dim pad As Integer = 4
Dim alter As Boolean = False
Dim alter2 As Boolean = False
For i As Integer = 9 To 18
For j As Integer = 0 To 50 Step 10
If j = 0 Or j = 20 Or j = 40 Then
alter2 = False
ElseIf j = 10 Or j = 30 Or j = 50 Then
alter2 = True
End If
Dim m As String
If j = 0 Then
m = "00"
Else
m = j
End If
LabelApercu.Text += "<tr><td style=""display:block; border-collapse:collapse; font-size:10px; font-weight:bold; padding-top:" & pad & "px"">" & i & "h" & m & " __<br /><span style=""font-size:12px""> </span></td></tr>"
If alter Then
pad = pad - 2
If Not alter2 Then
alter = False
End If
Else
pad = pad + 2
alter = True
End If
Next
Next
LabelApercu.Text += "</table>"
'Fin du tableau des horaires
passage = True
End If
Dim unEdt As New EDT(reader.GetInt32(0))
unEdt.Find()
Dim uneMat As MAT = unEdt.GetMatiere
Dim unMut As New MUT
Dim Discipline As String = ""
Dim Couleur As String = "none"
Dim prof As String = ""
Dim salle As String = ""
If uneMat.GetIdMat = -1 Then
'cas de repas ou de récré
Discipline = unEdt.GetAutre
Couleur = "#FFFFFF"
Else
'cas d'une matière
Dim cnx2 As SqlConnection = New BdD().SeConnecter
Dim reader2 As SqlDataReader = New SqlCommand("SELECT Id FROM Matiere-Utilisateur WHERE Id=" & uneMat.GetIdMat, cnx2).ExecuteReader
While reader2.Read
unMut.SetIdMut(reader.GetInt32(0))
If unMut.Find() Then
Exit While
End If
End While
reader2.Close()
cnx2.Close()
cnx2.Dispose()
Discipline = uneMat.GetLibelle
Couleur = uneMat.GetColor
prof = unMut.GetProf.GetPrenom & " " & unMut.GetProf.GetNom
If Not unEdt.GetSalle = "" Then
salle = "Salle : " & unEdt.GetSalle
Else
salle = ""
End If
End If |
Suite dans le post suivant.