我想在ASP的下拉列表中选择一个项目。NET用VB编写的。NET -我在列表框中有如下的值和文本:
Volvo Audi etc...
但值来自大写的其他地方。沃尔沃奥迪.此代码:
dropdownlist.FindByValue("CAPITAL")
不工作,并为沃尔沃提供null。.请帮帮我
null
beq87vna1#
一种方法是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));
t9eec4r02#
这对我很有效
foreach(ListItem li in dropdownlist.Items) { if (String.Compare(li.Text, myLabel.Text, true) == 0) myCustomValidator.IsValid = false; // Match Found ! }
dluptydi3#
就像蒂姆说的,LINQ就是你的答案。在C#中尝试以下操作:
var item = dropdownlist.Items.Cast<ListItem>().SingleOrDefault(li => li.Text.ToUpper() == "VOLVO");
nlejzf6q4#
其他变体,使用框架CI比较。VB:
uiList.Items.Cast(Of ListItem) .FirstOrDefault(Function(i) i.Text.Equals(comparand, StringComparison.InvariantCultureIgnoreCase))
uiList.Items.Cast<ListItem>() .FirstOrDefault(i => i.Text.Equals(comparand, StringComparison.InvariantCultureIgnoreCase));
您也可以根据需要使用CurrentCultureIgnoreCase。这些通常比与ToUpper/ToLower进行比较更安全,因为某些区域性具有意外的大小写规则。
CurrentCultureIgnoreCase
ToUpper/ToLower
lnvxswe25#
这个问题已经有一段时间了,虽然似乎有解决方案,但这些解决方案似乎并不适用于网页。所以我创建了一个将在网站上工作。我创建了一个名为Extensions(C#)的静态类,并将以下代码放入类中:
public static ListItem FindByText(this ListItemCollection collection, string text, bool ignoreCase) { ListItem tmp = new ListItem(); if(collection != null) foreach(ListItem li in collection) { if(li.ToString().ToLower() == text.ToLower()) { return li; } } return tmp; }
在代码中,我需要这样调用它:
ddlStates.SelectedIndex = ddlStates.Items.IndexOf(ddlStates.Items.FindByText(User.State, true));
如果不使用第二个参数,则调用默认的FindByText函数,该函数区分大小写。ddlStates是所有50个州和用户的下拉列表。州是用户所在的地方。我需要获取状态的Index,这需要一个ListIndex值,而不仅仅是文本,所以当我调用Users帐户时,它会将其放入下拉列表中。但是,状态处于大写和小写的各种条件下。如果由于任何原因没有匹配项,它只会将其保留在下拉列表中的第一个选择项(空白选择项)。这使得用户可以选择适当的状态。我希望这对那些认为这个选择应该沿着存在的人有效。
5条答案
按热度按时间beq87vna1#
一种方法是LINQ:
C#:
t9eec4r02#
这对我很有效
dluptydi3#
就像蒂姆说的,LINQ就是你的答案。
在C#中尝试以下操作:
nlejzf6q4#
其他变体,使用框架CI比较。VB:
C#:
您也可以根据需要使用
CurrentCultureIgnoreCase
。这些通常比与ToUpper/ToLower
进行比较更安全,因为某些区域性具有意外的大小写规则。lnvxswe25#
这个问题已经有一段时间了,虽然似乎有解决方案,但这些解决方案似乎并不适用于网页。所以我创建了一个将在网站上工作。我创建了一个名为Extensions(C#)的静态类,并将以下代码放入类中:
在代码中,我需要这样调用它:
如果不使用第二个参数,则调用默认的FindByText函数,该函数区分大小写。ddlStates是所有50个州和用户的下拉列表。州是用户所在的地方。我需要获取状态的Index,这需要一个ListIndex值,而不仅仅是文本,所以当我调用Users帐户时,它会将其放入下拉列表中。但是,状态处于大写和小写的各种条件下。如果由于任何原因没有匹配项,它只会将其保留在下拉列表中的第一个选择项(空白选择项)。这使得用户可以选择适当的状态。
我希望这对那些认为这个选择应该沿着存在的人有效。