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 : 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
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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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"">&nbsp;</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.