'The function worx like next:1. Count how many results there are.
'2. Fill the array with the results.
'3. The function then checks if the number of items in the dropdownlist are even to the items in the array.
'4. If not the dropdownlist will be adjusted to size of the array.
'5. Then all the items in the array are compared to those in the dropdownlist,
'For example: item 1 in the array is compared to item 1 in the dropdownlist. If these aren't even the
'dropdownlist item is switched with item nr 1 from the array. etc.
' this all is needed to keep the data in the dropdownlists up to date whenever the data changes in the database that's being populated in the dropdownlist.
' It fixes the following problem: If dropdownlist 1 is populated, and right after that someone changes
'one of the values in the database that also exist in the dropdownlist,
'then dropdownlist1 would still have the old value. If the user selects that value, the application would generate errors.
'because the old value doesn't exist in the database anymore.
Try
odbcConnectpublic.Open()
Session.Item("OdbccommndO").CommandText = "select naam from groep order by naam;"
Session.Item("myreader") = Session.Item("OdbccommndO").ExecuteReader()
If Session.Item("myreader").HasRows Then
While Session.Item("myreader").Read
'count the amount of items
Session.Item("vergelijkteller") = Session.Item("vergelijkteller") + 1
End While
ReDim Session.Item("vergelijkarrayI")(Session.Item("vergelijkteller") - 1)
End If
Catch ex As Exception
costumfunction.log(ex.Message)
Finally
Session.Item("myreader").Close()
odbcConnectpublic.Close()
End Try
'compare the amount of items in the dropdownlist with those in the array
If ddlContractgroep.Items.Count - 1 < Session.Item("vergelijkteller") Then
While ddlContractgroep.Items.Count - 1 <> Session.Item("vergelijkteller")
ddlContractgroep.Items.Add("temp")
End While
ElseIf ddlContractgroep.Items.Count - 1 > Session.Item("vergelijkteller") Then
While ddlContractgroep.Items.Count - 1 <> Session.Item("vergelijkteller")
ddlContractgroep.Items.RemoveAt(1)
End While
End If
Try
odbcConnectpublic.Open()
Session.Item("OdbccommndO").CommandText = "select naam from groep order by naam;"
Session.Item("myreader") = Session.Item("OdbccommndO").ExecuteReader()
Session.Item("vergelijkteller") = 0
If Session.Item("myreader").HasRows Then
While Session.Item("myreader").Read
'fill the array with the items
Session.Item("vergelijkarrayI")(Session.Item("vergelijkteller")) = Session.Item("myreader").GetString(0)
Session.Item("vergelijkteller") = Session.Item("vergelijkteller") + 1
End While
End If
Catch ex As Exception
costumfunction.log(ex.Message)
Finally
Session.Item("myreader").Close()
odbcConnectpublic.Close()
End Try
Session.Item("vergelijkteller") = 1
Session.Item("vergelijkteller2") = 0
While Session.Item("loopT") < Session.Item("vergelijkarrayI").Length
If Session.Item("vergelijkarrayI")(Session.Item("vergelijkteller2")).Equals(ddlContractgroep.Items.Item(Session.Item("vergelijkteller")).Text) = True Then
Session.Item("vergelijkteller") = Session.Item("vergelijkteller") + 1
Session.Item("vergelijkteller2") = Session.Item("vergelijkteller2") + 1
Else
ddlContractgroep.Items.RemoveAt(Session.Item("vergelijkteller"))
ddlContractgroep.Items.Insert(Session.Item("vergelijkteller"), Session.Item("vergelijkarrayI")(Session.Item("vergelijkteller2")))
Session.Item("vergelijkteller") = Session.Item("vergelijkteller") + 1
Session.Item("vergelijkteller2") = Session.Item("vergelijkteller2") + 1
End If
Session.Item("loopT") = Session.Item("loopT") + 1
End While
Session.Item("loopT") = 0
Session.Item("vergelijkteller") = 0
Session.Item("vergelijkteller2") = 0
End Function