Когда пользователь перешел к новой странице, выбранный индекс этого ddl определяется cookie, но если бы ddl не содержит значение того cookie, то я хотел бы, чтобы это было установлено 0. Какой метод я использовал бы для ddl? Действительно ли цикл является лучшим способом или там просто, если оператор я могу выполнить?
Это - то, чего я делал попытку, но это не возвращает bool.
if ( !ddlCustomerNumber.Items.FindByText( GetCustomerNumberCookie().ToString() ) )
ddlCustomerNumber.SelectedIndex = 0;
На ум приходят два метода:
Можно использовать Contains like so:
if (ddlCustomerNumber.Items.Contains(new
ListItem(GetCustomerNumberCookie().ToString())))
{
// ... code here
}
или модифицировать текущую стратегию:
if (ddlCustomerNumber.Items.FindByText(
GetCustomerNumberCookie().ToString()) != null)
{
// ... code here
}
EDIT: Также существует DropDownList.Items.FindByValue
, который работает так же, как и FindByText, за исключением того, что он ищет по значениям вместо них.
Это вернет предмет. Просто переключитесь на:
if (ddlCustomerNumber.Items.FindByText( GetCustomerNumberCookie().ToString()) != null)
ddlCustomerNumber.SelectedIndex = 0;
А как насчет этого:
ListItem match = ddlCustomerNumber.Items.FindByText(
GetCustomerNumberCookie().ToString());
if (match == null)
ddlCustomerNumber.SelectedIndex = 0;
//else
// match.Selected = true; // you'll probably select that cookie value
Можно попробовать проверить, не возвращает ли этот метод ноль:
if (ddlCustomerNumber.Items.FindByText(GetCustomerNumberCookie().ToString()) != null)
ddlCustomerNumber.SelectedIndex = 0;