web-dev-qa-db-ger.com

Dropdown-Liste für das ausgewählte Element programmgesteuert festlegen

Ich möchte das selecteditem-Attribut für ein ASP.Net-Dropdownlistensteuerelement programmgesteuert festlegen.

Ich möchte also einen Wert an das Dropdownlisten-Steuerelement übergeben, um das ausgewählte Element festzulegen, bei dem das Element dem übergebenen Wert entspricht.

62
Eyla

Vorausgesetzt, die Liste ist bereits an Daten gebunden, können Sie einfach die SelectedValue -Eigenschaft in Ihrer Dropdown-Liste festlegen.

list.DataSource = GetListItems(); // <-- Get your data from somewhere.
list.DataValueField = "ValueProperty";
list.DataTextField = "TextProperty";
list.DataBind();

list.SelectedValue = myValue.ToString();

Der Wert der Variable myValue muss in der Eigenschaft vorhanden sein, die in der Variablen DataValueField in der Datenbinding Ihrer Steuerelemente angegeben ist.

UPDATE: Wenn der Wert von myValue nicht als Wert mit den Dropdown-Listenoptionen vorhanden ist, wird standardmäßig die erste Option in der Dropdown-Liste ausgewählt.

88
Wallace Breza

ddlData.SelectedIndex enthält den int-Wert, um den spezifischen Wert in DropDown auszuwählen:

ddlData.SelectedIndex=ddlData.Items.IndexOf(ddlData.Items.FindByText("value"));

Der return-Typ von ddlData.Items.IndexOf(ddlData.Items.FindByText("value")); ist int.

59
PrateekSaluja

Hier ist der Code, nach dem ich gesucht habe:

DDL.SelectedIndex = DDL.Items.IndexOf(DDL.Items.FindByText("PassedValue"));

Oder

DDL.SelectedIndex = DDL.Items.IndexOf(DDL.Items.FindByValue("PassedValue"));
28
Eyla

Wenn Sie Ihren Listeneintrag basierend auf einem Ausdruck auswählen müssen:

foreach (ListItem listItem in list.Items)
{
    listItem.Selected = listItem.Value.Contains("some value");
}
4
Craig Curtis

Wenn ich deine Frage richtig verstanden habe. Die Lösung für das Festlegen des Werts für eine bestimmte Dropdownliste lautet:

dropdownlist1.Text="Your Value";

Dies funktioniert nur, wenn der Wert in der Datenquelle der Dropdownliste vorhanden ist.

4
maxspan
var index = ctx.Items.FirstOrDefault(item => Equals(item.Value, Settings.Default.Format_Encoding));
ctx.SelectedIndex = ctx.Items.IndexOf(index);

OR

foreach (var listItem in ctx.Items)
  listItem.Selected = Equals(listItem.Value as Encoding, Settings.Default.Format_Encoding);

Sollte funktionieren, vor allem wenn Sie erweiterte RAD - Steuerelemente verwenden, in denen FindByText/Value nicht einmal existiert!

1
Latency
ddList.Items.FindByText("oldValue").Selected = false;
ddList.Items.FindByText("newValue").Selected = true;
1
A. Obeid

Sicherheitsüberprüfung, um nur auszuwählen, ob ein Artikel übereinstimmt.

//try to find item in list.  
ListItem oItem = DDL.Items.FindByValue("PassedValue"));
//if exists, select it.
if (oItem != null) oItem.Selected = true;
0
mike

Beim Laden von Mein Windows-Formular zeigt die comboBox die ClassName-Spalte meiner DataTable-Datei an, da die DisplayMember auch deren ValueMember (für Benutzer nicht sichtbar) enthält.

private void Form1_Load(object sender, EventArgs e)
            {
                this.comboBoxSubjectCName.DataSource = this.Student.TableClass;
                this.comboBoxSubjectCName.DisplayMember = TableColumn.ClassName;//Column name that will be the DisplayMember
                this.comboBoxSubjectCName.ValueMember = TableColumn.ClassID;//Column name that will be the ValueMember
            }
0
Parag555