Ich habe eine Mehrfachauswahlliste, die ich an eine DataTable binde. DataTable enthält 2 Spalten Beschreibung und Wert.Ausgewähltes Element in einer ListBox ohne Schleife einstellen
Hier ist der listbox bevöl Code:
DataTable copytable = null;
copytable = GlobalTable.Copy(); // GlobalTable is a DataTable
copytable.Rows[0][0] = "--ALL--";
copytable.Rows[0][1] = "--ALL--";
breakTypeList.DataSource = copytable;
this.breakTypeList.DisplayMember = copytable.Columns[0].ColumnName; // description
this.breakTypeList.ValueMember = copytable.Columns[1].ColumnName; // value
this.breakTypeList.SelectedIndex = -1;
Ich gründe Beschreibung als Display und Wert wie die Valuemember der List-Box. Jetzt abhängig davon, was der Wert übergeben wird, muss ich das ausgewählte Element in der ListBox festlegen.
Hier ist mein Code:
ListBox lb = c as ListBox;
lb.SelectedValue = valuePassedByUser;
, die nicht funktioniert. Daher muss ich unten auf den Code zurückgreifen (wo ich Schleife durch alle Elemente in dem Listenfeld)
for (int i = 0; i < lb.Items.Count; i++)
{
DataRowView dr = lb.Items[i] as DataRowView;
if (dr["value"].ToString() == valuePassedByUser)
{
lb.SelectedIndices.Add(i);
break;
}
}
Ich mag würde wissen, was in meinem Code fehlt/fehlerhaft. Warum ist lb.SelectedValue = valuePassedByUser; falsche Artikel auswählen?
Können Sie weitere Informationen darüber geben, was genau Sie tun müssen oder ein vollständigeres Beispiel für den Code? Soll das Objekt ein Feld aus einer Datenbank lesen und den ausgewählten Index/Wert auf einen übereinstimmenden Wert in der Listbox setzen? – ryanulit
Das Listenfeld wird mit einer DataTable gefüllt, die wiederum Daten aus der Datenbank enthält. Meine Sorge ist, wenn ich das ValueMember während des Auffüllens der Liste gesetzt habe, warum ist lb.SelectedValue = valuePassedByUser; funktioniert nicht? –