01. juli 2003 - 11:24Der er
5 kommentarer og 1 løsning
CheckedListBox skal læse værdier fra database
ok, denne er lidt kryptisk.
Jeg skal læse data fra en SQL DB og vise disse data i en "CheckedListBox" så langt så godt. MEN disse data skal holdes op mod data fra en anden tabel og de data som findes begge steder skal "checkmarkes" i min CheckedListBox. Er dette forståeligt??
Jeg har lavet et lille eksempel .. det kan sikkert gøres meget bedre, men det virker da :) Jeg har en database, testdb. Der er to tabeller, tabel1 og tabel2. Begge tabeller har to felter, id og value. Testdata i tabellerne ser således ud: Table1: id value ----------- ---------- 1 test1 2 test2 3 test3 4 test4 5 test7 6 test1
Table2: id value ----------- ---------- 1 test1 2 test2 3 test8 4 test9 5 test10 ********** Så har jeg lavet en lille asp.net side med vb.net som codebehind. På siden er der udelukkende en checkboxlist. Eneste attribut jeg har ændret på den er navnet, den hedder nu chkboxlst. Følgende kode er smidt ind i code behind:
********************************** Dim strConnection As String = "user id=sa;password=;database=tempdb;server=localhost;connect timeout=30" Protected WithEvents chkboxlst As System.Web.UI.WebControls.CheckBoxList Dim objConnection As New SqlConnection(strConnection)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load objConnection.Open() Dim dt1 As DataTable = getDataTable("SELECT DISTINCT value FROM table1") Dim dt2 As DataTable = getDataTable("SELECT DISTINCT value FROM table2")
Dim dr As DataRow Dim i, j As Integer j = 0 For Each dr In dt1.Rows chkboxlst.Items.Add(CStr(dr.Item(0))) For i = 0 To dt2.Rows.Count - 1 If CStr(dr.Item(0)) = CStr(dt2.Rows(i).Item(0)) Then chkboxlst.Items(j).Selected = True End If Next j += 1 Next objConnection.Close() End Sub
Public Function getDataTable(ByRef strSQL As String) As DataTable Dim objDataAdapter As New SqlDataAdapter(strSQL, objConnection) Dim objDataTable As New DataTable() objDataAdapter.Fill(objDataTable) Return objDataTable End Function
Public Function getDataRow(ByRef strSQL As String) As DataRow Dim objDataRow As DataRow Dim objDataTable As DataTable objDataTable = getDataTable(strSQL) If objDataTable.Rows.Count > 0 Then objDataRow = objDataTable.Rows(0) End If Return objDataRow End Function ******************************
og resultatet er at der er 5 checkboxe, test1, test2, test3, test4 og test7 og boxene test1 og test2 er checked.
Jeg har ændret lidt på "kravene"... Der skal nok falde lidt flere point af...
Jeg har oprettet et array som henter mine data. Disse bliver listet i min CheckedListBox og det ser fint ud. MEN nu vil jeg så holde alle disse værdier op imod en ekstern tabel og de værdier som stemmer overens med denne skal "markeres" i checklistboxen. Mit array er oprettet som et "object" og ikke som et array...
Jeg lukker denne da opgaven har ændret sig en del... men du får pointene da du har lagt et stort arbejde i at hjælpe mig... tak for det!
Systemnissen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.