检查下拉列表是否包含值的最佳方法是什么?

Jus*_*ten 57 c# asp.net drop-down-menu

当用户导航到新页面时,此ddl的选定索引由cookie确定,但如果ddl不包含该cookie的值,那么我希望将其设置为0.我将使用哪种方法DDL?循环是最好的方式,还是我可以执行简单的if语句?

这是我尝试过的,但它没有返回bool.

if ( !ddlCustomerNumber.Items.FindByText( GetCustomerNumberCookie().ToString() ) )
    ddlCustomerNumber.SelectedIndex = 0;
Run Code Online (Sandbox Code Playgroud)

Sco*_*son 122

有两种方法可以想到:

你可以像这样使用Contains:

if (ddlCustomerNumber.Items.Contains(new 
    ListItem(GetCustomerNumberCookie().ToString())))
{
    // ... code here
}
Run Code Online (Sandbox Code Playgroud)

或修改您当前的策略:

if (ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString()) != null)
{
    // ... code here
}
Run Code Online (Sandbox Code Playgroud)

编辑:DropDownList.Items.FindByValue除了基于值的搜索之外,还有一个与FindByText相同的方式.


Nat*_*ler 9

这将返回一个项目.只需更改为:

if (ddlCustomerNumber.Items.FindByText( GetCustomerNumberCookie().ToString()) != null)
    ddlCustomerNumber.SelectedIndex = 0;
Run Code Online (Sandbox Code Playgroud)


Tob*_*ias 5

如果0是您的默认值,您只需使用简单的赋值:

ddlCustomerNumber.SelectedValue = GetCustomerNumberCookie().ToString();
Run Code Online (Sandbox Code Playgroud)

如果DDL包含cookie的值,则会自动选择正确的列表项.如果它不包含它,则此调用不会更改选择,因此它将保持默认选择.如果后者与值0相同,那么它就是您的完美解决方案.

我使用这个机制相当多,发现它非常方便.