Trots att mitt problem nu är löst, så verkar ju Dinos kod vara "den snyggaste lösningen" enligt Gladh. :D
Jag försöker använda mig av Dinos kod, men det fungerar inte alltför bra. Så
här ser min kod ut:
'funktion för att ta ut data ur databasen om anställda, för att senare kunna visa info i en dropdownlista
function GetMyDamnData() as ArrayList
dim SQL As string = "SELECT id,fornamn,efternamn,anstallningsid FROM tbl_anstallda ORDER BY id asc"
dim Cn As OleDbConnection = new OleDbConnection(CnStr)
dim Cm As OleDbCommand = new OleDbCommand(SQL,Cn)
dim arr As new ArrayList()
try
Cn.Open()
dim dr As OleDbDataReader = Cm.ExecuteReader()
'lägg till val i kategoridropdownlistan
while(dr.Read())
arr.Add(new Data(dr("id").ToString(), dr("fornamn").toString() & " " & dr("efternamn").toString() & " [" & dr("anstallningsid").toString() & "]"))
end while
Catch ex As exception
lbl_error.Text = "Ett fel uppstod när visning av anställda från databasen skulle ske..<br />Error: " & ex.Message
finally
dr.Close()
Cn.Close()
end try
return arr
end function
'procedur för att binda data och visa anställda i en dropdownlista
sub ddl__visa_anstallda()
ddl_anstallda.DataSource = GetMyDamnData()
ddl_anstallda.DataValueField = ID
ddl_anstallda.DataTextField = Info
ddl_anstallda.DataBind()
end sub
Jag har all kod i en codebehind-sida, default.vb. I default.vb finns klassen def_ som ärver
Page, och klassen uc_ som ärver UserControl. Koden ovan finns i klassen uc_ tillsammans med lite andra
procedurer. Självfallet har jag också klassen Data (längst ner i default.vb, efter uc_-klassen).
public class Data
private _id, _info as string
Public Property ID As string
Get
Return _id
end Get
Set
_id = value
end Set
end Property
Public Property Info As string
Get
Return _info
end Get
Set
_info = value
end Set
end Property
sub _new()
end sub
sub _new(dim ID as string, dim Info as string)
me._id = ID
me._info = Info
end sub
end class
Jag har fått ett antal felmeddelanden, och det som nu är det primära är detta:
Compiler Error Message: BC30057: Too many arguments to 'Public Sub New()'.
Source Error:
Line 492: 'lägg till val i kategoridropdownlistan
Line 493: while(dr.Read())
Line 494: arr.Add(new Data(dr("id").ToString(), dr("fornamn").toString() & " " & dr("efternamn").toString() & " [" & dr("anstallningsid").toString() & "]"))
Line 495: end while
Line 496: Catch ex As exception
Det är alltså min ArrayList som genererar ett fel - men vilket, och inte minst - vilken åtgärd ska man vidta?
MS föreslår detta, men som vanligt är de ju inte de bästa på att förklara saker och ting.
Method '<methodname>' has multiple definitions with identical signatures
A Function or Sub procedure declaration uses the identical procedure name and argument list as a previous declaration. One possible cause is an attempt to overload the original procedure. Overloaded procedures must have different argument lists.
To correct this error
Change the procedure name or the argument list, or remove the duplicate declaration.
Vidare så finns det några felmeddelanden till. Nedan är alla felmeddelanden jag har:
e:\web\project\behind\default.vb(494) : error BC30057: Too many arguments to 'Public Sub New()'.
arr.Add(new Data(dr("id").ToString(), dr("fornamn").toString() & " " & dr("efternamn").toString() & " \[" & dr("anstallningsid").toString() & "\]"))
e:\web\project\behind\default.vb(499) : error BC30451: Name 'dr' is not declared.
dr.Close()
\~\~
e:\web\project\behind\default.vb(513) : error BC30451: Name 'Info' is not declared.
ddl_anstallda.DataTextField = Info
\~\~\~\~
e:\web\project\behind\default.vb(574) : error BC30269: Method '_new' has multiple definitions with identical signatures.
sub _new()
~~~~
e:\web\project\behind\default.vb(577) : error BC30181: Specifiers valid only at the beginning of a declaration.
sub _new(dim ID as string, dim Info as string)
Väldigt mycket på en gång, men hoppas på att allt kan lösa sig. Det är alltid kul att ha alternativa lösningar
på ett problem, inte minst för andra som behöver använda sig av samma funktion på en webbsida. :)