如何通过显示文本在ASP.NET下拉列表中设置所选项?

我有一个ASP.NET下拉列表,我通过数据绑定填充。 我有与我想要选择的列表项目的显示文本相匹配的文本。 我显然不能使用SelectedText(仅限getter)并且我不知道索引,所以我不能使用SelectedIndex。 我目前正在通过遍历整个列表来选择项目,如下所示:

ASP:

 

码:

 ddItems.DataSource = myItemCollection; ddItems.DataTextField = "Name"; ddItems.DataValueField = "Id"; foreach (ListItem item in ddItems.Items) { if (item.Text == textToSelect) { item.Selected = true; } } 

有没有办法在不迭代所有项目的情况下执行此操作?

你可以试试:

 ddItems.Items.FindByText("Hello, World!").Selected = true; 

要么:

 ddItems.SelectedValue = ddItems.Items.FindByText("Hello, World!").Value; 

请注意,如果您不确定某个项目是否与您的显示文本匹配,则可能需要检查FindByText()的结果FindByText()null

请注意,我在多选列表上使用第一种方法,例如CheckBoxList以添加其他选择。 我使用第二种方法来覆盖所有选择。

使用ListItemCollection类的FindByText方法,例如:

 ListItem itemToSelect = ddlItems.Items.FindByText("some text to match"); if(itemToSelect != null) { itemToSelect.Selected = true; } 

如果必须为多个下拉案例选择下拉选定项目文本,请使用此方法。

 // Call Method SelectDropdownItemByText(ddlDropdown.Items.FindByText("test")); // Define method public void SelectDropdownItemByText(ListItem item) { if (item != null) { item.Selected = true; } } 

工作正常..

 drplistcountry.SelectedIndex = drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--")); 

要么

 drplistcountry.ClearSelection(); drplistcountry.SelectedIndex = drplistcountry.Items.IndexOf(drplistcountry.Items.FindByText("--Select--"));