Listen-Controls füllen mit ListItems
Autor: Jürgen Gutsch
Version: 1.0
Sprache: vb.net
Benötigt wird:
.net-Framework ab v1.x.xxxx
Getestet auf: winXP-Professional (IIS 5.1)
Listen-Controls
Listen-Controls sind alle Steuerelemente, mit denen Listenauswahlen generiert werden können. Hier mal die wichtigsten:
DropDownList (System.Web.UI.WebControls.DropDownList)
<asp:DropDownList id="DropDownList1" runat="server" />
ListBox (System.Web.UI.WebControls.ListBox)
<asp:ListBox id="ListBox1" runat="server" />
RadioButtonList (System.Web.UI.WebControls.RadioButtonList)
<asp:RadioButtonList id="RadioButtonList1" runat="server" />
CheckBoxList (System.Web.UI.WebControls.CheckBoxList)
<asp:CheckBoxList id="CheckBoxList1" runat="server" />
HtmlSelect (System.Web.UI.HtmlControls.HtmlSelect)
<select name="HtmlSelect1" id="HtmlSelect1" runat="server"><select>
ListItems
Alle oben genannten Controls können mit ListItems (System.Web.UI.WebControls.ListItem) gefüllt werden. Diese ListItems bilden dann die ChildControls dieser Steuerelemente.
ListItems bilden für die DropDownList, die ListBox und das HtmlSelect die <option>-Tags. Für die RadioButtonList eine Liste der zusammengehörenden RadioButtons (<input type="radio" ... />), ähnliches gilt für die CheckBoxList.
Befüllen der Listen-Controls
Hier eine universale Funktion, die jede der obigen Controls füllen kann:
Private Sub FillBoxes(ByRef Box As System.Object, _
ByRef ds As System.Data.DataSet)
' >>>>> eventuelle vorhandene Werte löschen
Box.Items.Clear()
' >>>>> DatarowArray mit den Werten im Dataset Füllen
Dim dr() As System.Data.DataRow = ds.Tables(0).Select()
' >>>>> Variable "ListItem" definieren
Dim ListItem As System.Web.UI.WebControls.ListItem
' >>>>> Zähler für die ForSchleife
Dim i As Integer
For i = 0 To dr.Length - 1
' >>>>> ListItem deklarieren
ListItem = New System.Web.UI.WebControls.ListItem()
' >>>>> Value setzen
ListItem.Value = dr(i).Item(0).ToString
' >>>>> sichtbaren Text setzen
ListItem.Text = dr(i).Item(1).ToString
' >>>>> erstes ListItem Selected setzen
If i = 0 Then ListItem.Selected = True
' >>>>> Listitem dem Feld hinzufügen
Box.Items.Add(ListItem)
' >>>>> und ListItem zerstören
ListItem = Nothing
Next
dr = Nothing
End Sub
Diese Funktion erwartet ein Steuerelement (hier "Box" als System.Object deklariert, weil ich kein übergeordnetes Control gefunden habe, dass die Eigenschaft "Items" besitzt und alle oben genannten Controls abbilden kann), und ein Dataset (mit mindestens einer DataTable, diese enthält wiederum mindestens zwei DataColumns, die erste DataColumn steht für den Wert (Value) des ListItems und die zweite für den Text der angezeigt werden soll).
Die Daten des DataSet werden in ein DataRow-Array geladen, welches dann anschließend in der Schleife ausgelesen wird. Innerhalb der Schleife werden die ListItems erzeugt (ListItem = New System.Web.UI.WebControls.ListItem()) und dem Control hinzugefügt (Box.Items.Add(ListItem)).
Viel mehr muss, glaube ich, nicht zu der Funktion gesagt werden...