asp.net 选择不区分大小写的下拉列表项findbytext www.example.com

vh0rcniy  于 2023-05-02  发布在  .NET
关注(0)|答案(5)|浏览(109)

我想在ASP的下拉列表中选择一个项目。NET用VB编写的。NET -我在列表框中有如下的值和文本:

Volvo
Audi
etc...

但值来自大写的其他地方。沃尔沃奥迪.
此代码:

dropdownlist.FindByValue("CAPITAL")

不工作,并为沃尔沃提供null。.请帮帮我

beq87vna

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));
t9eec4r0

t9eec4r02#

这对我很有效

foreach(ListItem li in dropdownlist.Items)
    {
        if (String.Compare(li.Text, myLabel.Text, true) == 0)
            myCustomValidator.IsValid = false;  // Match Found !
    }
dluptydi

dluptydi3#

就像蒂姆说的,LINQ就是你的答案。
在C#中尝试以下操作:

var item = dropdownlist.Items.Cast<ListItem>().SingleOrDefault(li =>
                                               li.Text.ToUpper() == "VOLVO");
nlejzf6q

nlejzf6q4#

其他变体,使用框架CI比较。VB:

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进行比较更安全,因为某些区域性具有意外的大小写规则。

lnvxswe2

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帐户时,它会将其放入下拉列表中。但是,状态处于大写和小写的各种条件下。如果由于任何原因没有匹配项,它只会将其保留在下拉列表中的第一个选择项(空白选择项)。这使得用户可以选择适当的状态。
我希望这对那些认为这个选择应该沿着存在的人有效。

相关问题