выберите элемент выпадающего списка findbytext без учета регистра vb.net
Я хочу выбрать один элемент в раскрывающемся списке в ASP.NET написано с VB.NET - у меня есть значения и тексты в listbox, как это:
Volvo Audi etc...но значения из другого места в верхнем регистре... ВОЛЬВО, АУДИ..
этот код:
dropdownlist.FindByValue("CAPITAL")
не работает и дает null
для Volvo.. пожалуйста помочь.
4 ответов
один из способов будет LINQ:
Dim volvoItem = dropdownlist.Items.Cast(Of ListItem)().
FirstOrDefault(Function(i) i.Text.Equals("Volvo", StringComparison.InvariantCultureIgnoreCase))
C#:
var volvoItem = dropdownlist.Items.Cast<ListItem>()
.FirstOrDefault(i => i.Text.Equals("Volvo", StringComparison.InvariantCultureIgnoreCase));
это сработало для меня
foreach(ListItem li in dropdownlist.Items)
{
if (String.Compare(li.Text, myLabel.Text, true) == 0)
myCustomValidator.IsValid = false; // Match Found !
}
как Тим сказал, LINQ будет вам ответ.
в C# попробуйте следующее:
var item = dropdownlist.Items.Cast<ListItem>().SingleOrDefault(li =>
li.Text.ToUpper() == "VOLVO");
дополнительные варианты, используя сравнение CI рамки. В. Б.:
uiList.Items.Cast(Of ListItem)
.FirstOrDefault(Function(i) i.Text.Equals(comparand, StringComparison.InvariantCultureIgnoreCase))
C#:
uiList.Items.Cast<ListItem>()
.FirstOrDefault(i => i.Text.Equals(comparand, StringComparison.InvariantCultureIgnoreCase));
вы также можете использовать CurrentCultureIgnoreCase
в зависимости от ваших потребностей. Они, как правило, безопаснее, чем по сравнению с ToUpper/ToLower
, потому что некоторые культуры имеют неожиданные правила корпусе.