要使用一个值在下拉列表中查找一个项目(并选择它),我们只需执行
dropdownlist1.Items.FindByValue("myValue").Selected = true;
如何使用部分值查找项目?假设我有 3 个元素,它们的值分别为“myValue one”、“myvalue 2”、“myValue 3”。我想做类似的事情
dropdownlist1.Items.FindByValue("three").Selected = true;
并让它选择最后一项。
要使用一个值在下拉列表中查找一个项目(并选择它),我们只需执行
dropdownlist1.Items.FindByValue("myValue").Selected = true;
如何使用部分值查找项目?假设我有 3 个元素,它们的值分别为“myValue one”、“myvalue 2”、“myValue 3”。我想做类似的事情
dropdownlist1.Items.FindByValue("three").Selected = true;
并让它选择最后一项。
您可以从列表的末尾进行迭代并检查 value 是否包含该项目(这将选择包含值“myValueSearched”的最后一个项目)。
for (int i = DropDownList1.Items.Count - 1; i >= 0 ; i--)
{
if (DropDownList1.Items[i].Value.Contains("myValueSearched"))
{
DropDownList1.Items[i].Selected = true;
break;
}
}
或者您可以像往常一样使用 linq:
DropDownList1.Items.Cast<ListItem>()
.Where(x => x.Value.Contains("three"))
.LastOrDefault().Selected = true;
您可以迭代列表中的项目,当您找到第一个项目的字符串包含该模式的项目时,您可以将其 Selected 属性设置为 true。
bool found = false;
int i = 0;
while (!found && i<dropdownlist1.Items.Count)
{
if (dropdownlist1.Items.ToString().Contains("three"))
found = true;
else
i++;
}
if(found)
dropdownlist1.Items[i].Selected = true;
或者您可以编写一个为您执行此操作的方法(或扩展方法)
public bool SelectByPartOfTheValue(typeOfTheItem[] items, string part)
{
bool found = false;
bool retVal = false;
int i = 0;
while (!found && i<dropdownlist1.Items.Count)
{
if (items.ToString().Contains("three"))
found = true;
else
i++;
}
if(found)
{
items[i].Selected = true;
retVal = true;
}
return retVal;
}
并这样称呼它
if(SelectByPartOfTheValue(dropdownlist1.Items, "three")
MessageBox.Show("Succesfully selected");
else
MessageBox.Show("There is no item that contains three");
上面提到的答案是完美的,只是没有区分大小写的证明:
DDL.SelectedValue = DDL.Items.Cast<ListItem>().FirstOrDefault(x => x.Text.ToLower().Contains(matchingItem)).Text