Вопрос: Как получить значение текущего выбранного элемента?
Ответ: Проще всего для получения текущего выбранного элемента воспользоваться свойством SelectedItem элемента DropDownList.
string currentValue = DropDownList1.SelectedItem.Value;
Более извращенным способом является использование свойства SelectedIndex элемента DropDownList:
string currentValue = DropDownList1.Items[DropDownList1.SelectedIndex].Value;
Выглядит конструкция посложнее предыдущей, а? :)
Ну и совершенно извращенный путь – перебрать все элементы DropDownList и найти тот, у которого свойство Selected установлено в true;
string currentValue;
foreach(ListItem item in DropDownList1.Items)
if(item.Selected){
currentValue = item.Value;
break;
}
Вопрос: Как добавлять/удалять элементы в DropDownList в коде?
Ответ: Свойство Items элемента DropDownList имеет несколько методов для добавления/удаления строк в DropDownList. Например используя методы Add и Insert можно добавить элемент в DropDownList или вставить его в указанную позицию в DropDownList, AddRange позволяет добавить массив элементов в DropDownList, метод Clear удаляет все элементы из DropDownList, методы Remove и RemoveAt удаляют указанный элемент или элемент, находящийся в указанной позиции соответственно. Вот несколько примеров вызовов перечисленных методов:
DropDownList1.Items.Clear();
DropDownList1.Items.Add("Первый элемент");
DropDownList1.Items.Add(new ListItem("Второй элемент", "значение"));
DropDownList1.Items.AddRange(new ListItem[] {new ListItem("Первый в массиве элементов"), new ListItem("Второй в массиве элементов", "2")});});
DropDownList1.Items.RemoveAt(0);
DropDownList1.Items.Remove("Второй элемент");
Вопрос: Я связываю элемент DropDownList с данными из источника данных (вывожу справочник). Как мне добавить в список выводимых данных пустое значение?
Ответ: После вызова метода DataBind элемента DropDownList можно воспользоваться методом Insert свойства Items элемента. Данный метод принимает 2 параметра – позицию, в которую необходимо вставить новый Item и вставляемый объект ListItem:
DropDownList1.DataSource = myData;
DropDownList1.DataTextField = "Name";
DropDownList1.DataVialueField = "id";
DropDownList1.DataBind();
//Пришла пора вставить новый ListItem
DropDownList1.Items.Add(0, new ListItem("Выберите...", ""));
Вопрос: Я использую элемент DropDownList как справочник в форме ввода. Как изначально выбрать элемент, отличный от первого (по имени или по значению).
Ответ: Свойство Items элемента управления DropDownList имеет метод FindByText (FindByValue) для поиска элемента с указанным значением Text или Value. Вызов этого метода возвращает ссылку на найденный элемент ListItem (или null если в DropDownList не найдено элемента, удовлетворяющего указанному условию). Для установки же того, что данный элемент – выбранный, необходимо присвоить свойству Selected возвращенного элемента ListItem значение true. Соответственно выглядит решение примерно так:
if(DropDownList1.Items.FindByText("Produce") != null)
DropDownList1.Items.FindByText("Produce").Selected = true;
Вопрос: Как быстро очистить выбор в элементе DropDownList?
Ответ: Установив SelectedIndex в -1.
Вопрос: Можно ли установить валидатор для элемента управления DropDownList.
Ответ: Действительно, на первый взгляд элемент RequiredFieldValidator возможно применять для проверки выбора значения в DropDownList только если в элементе DropDownList значение по умолчанию равно пустой строке. На самом деле все обстоит несколько иначе. Элемент RequiredFieldValidator имеет свойство InitialValue, которое можно установить в начальное (неверное) значение проверяемого элемента. И если установить данное свойство в значение по умолчанию для элемента DropDownList, то валидатор возвратит истину только в том случае, если выбранное в DropDownList значение не равно значению свойства InitialValue.
Также для проверки того, что пользователь выбрал значение в элементе DropDownList можно использовать элемент CompareFieldValidator. При этом необходимо установить как минимум 3 свойства данного элемента – ControlToValidate (ну это вроде как и так понятно), Operator (в NotEqual – нам необходимо проверить, что выбранное значение не равно значению по умолчанию) и ValueToCompare (здесь необходимо указать значение по умолчанию DropDownList).
Ну и напоследок небольшой пример использования элемента DropDownList. Страница в примере имеет 2 элемента DropDownList. Значения одного из этих DropDownList заданы в тексте страницы (список штатов), второй же DropDownList заполняется списком городов для выбранного штата. Источником данных служит демонстрационная база pubs из стандартной поставки MS SQL 2000. Также в обоих DropDownList первым элементом вставлены значения "Please select…" (для второго элемента данное значение вставляется программно). Показан также пример работы с валидаторами. 3 кнопки позволяют добавить/удалить штат в список штатов, выбрать определенный город (если он есть в списке городов) и вывести текущие выбранные значения.
|