Oplossing
Ik ben er eindelijk uit
aangezien je echt met geen mogelijkheid tableCells kunt ophalen a.d.h.v. hun id loop ik maar door hun idexen heen, dus blijkt nu heel snel en trefzeker te werken.
Ik moet wel wat tellertje enzo laten meelopen om te zorgen dat het allemaal goed gaat, maarja dan heb ik ook wat

Nu heb ik iig m`n eigen tabel draaien met daarbij mijn eigen vrijheid(blijheid)
Voor geintresseerden hoor de code
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
| '/////////////////////////// DayGrid vullen moet de afspraken /////////////////////////////////////////
'het aantal kollomen ophalen, -1 omdat de eerste kollom geen medewerker is maar de tijd vertegenwoordigd.
Dim CellsCount As Integer = scheduleTable.Rows.Item(0).Cells.Count - 1
'beginnen bij ID 0 als eerste kolom / werknemer
'CellStartID wordt met 1 verhoogt na elke kolom / werknemer
Dim CellID As Integer = 0
'het aantalRows tellen - het totaal aan tijdVlakken en de headerRow
Dim RowsCount As Integer = scheduleTable.Rows.Count - TotaalTijdVlakken
'de RowsCount om mee te werken
Dim RowCountTemp As Integer = RowsCount
'door alle medewerkers heenlopen
For Each MwNummer In MwNumArray
'de begintijd van de geselecteerde dag ophalen
Dim BeginTijd = StartTijd
'de eerste row vastleggen, ID 1 zijn de headers
Dim RowsID As Integer = 2
'Rows die geweest zijn tellen zodat wel om de zoveel rows de rowspan kunnen overslaan
Dim RowsDone As Integer = 0
'SQL query opbouwen
Dim mySelectQuery As String = "Select StartDatumTijd, EindDatumTijd, MedewerkerNr from tblafspraken WHERE (StartDatumTijd >= '" & SeldayStartNew & "' AND StartDatumTijd < '" & SelDayEindNew & "') AND MedewerkerNr ='" & MwNummer & "';"
'SQL query in de connectie zetten
Dim myCommand As New MySqlCommand(mySelectQuery, myconnection)
'database openen
myconnection.Open()
'dataReader declareren, ik gebruik dat datareader voor de performance
Dim myReader As MySqlDataReader
myReader = myCommand.ExecuteReader()
'controleren of de datareader wel resultaten heeft
If myReader.HasRows Then
'Altijd eerst READ aanroepen voor data ophalen
While myReader.Read()
'start en eindtijd van de afspraak ophalen en omzetten naar het juiste formaat voor vergelijking
Dim AfspraakBegin As DateTime = Format(myReader.GetDateTime(0), "H:mm")
Dim AfspraakEind As DateTime = Format(myReader.GetDateTime(1), "H:mm")
'door alle rows loopen in scheduleTable
Do While RowsID <= RowCountTemp
'als BeginTijd eerder is dan AfspraakBegin moeten we de tussenliggende rows overslaan
If BeginTijd < AfspraakBegin Or BeginTijd >= AfspraakEind Then
'WAAROM || If BeginTijd > AfspraakBegin Or BeginTijd <= AfspraakEind Then || HET NIET DOET IS EEN RAADSEL!
Else
'de cell de juiste CssClass geven
scheduleTable.Rows.Item(RowsID).Cells(CellID).CssClass = "VolleUren"
'einde tijdcontrole
End If
'ook de BeginTijd verhogen met de eerder opgegeven tijdstappen
BeginTijd = BeginTijd.AddMinutes(TijdStappen)
'RowsDone optellen
RowsDone = RowsDone + 1
'de RowId verhogen zodat we naar de volgende row gaan
If RowsDone = (TijdWeergave / TijdStappen) Then
RowsID = RowsID + 2
RowsDone = 0
RowCountTemp = RowCountTemp + 1
Else
RowsID = RowsID + 1
End If
Loop
'einde door rows loopen
'Alle tellers legen om naar de volgende afspraak te kunnen gaan
RowsDone = 0
RowsID = 2
RowCountTemp = RowsCount
BeginTijd = StartTijd
End While
End If
'dataReader sluiten
myReader.Close()
'database connectie sluiten
myconnection.Close()
'voordat we naar de volgende MedeWerker gaan verhogen we ook nog de CellID
CellID = CellID + 1
Next |
Voor mensen die hier iets aan kunnen toevoegen, heel graag!