Вопрос

Мне просто нужен выпадающий список ASP.NET без выбранного элемента.Установка SelectedIndex в значение -1 пока безрезультатна.Я использую Framework 3.5 с AJAX, т.е.этот выпадающий список находится в панели обновлений.Вот что я делаю:

    protected void Page_Load (object sender, EventArgs e)
    {
        this.myDropDownList.SelectedIndex = -1;
        this.myDropDownList.ClearSelection();

        this.myDropDownList.Items.Add("Item1");
        this.myDropDownList.Items.Add("Item2");
    }

В тот момент, когда я добавляю элемент в выпадающий список, его SelectedIndex изменяется на 0 и больше не может быть установлен в значение -1 (я также пробовал вызывать SelectedIndex после добавления элементов)...Что я делаю не так?Мы были бы признательны за любую помощь!

Это было полезно?

Решение

Имейте в виду myDropDownList.Товары.Add добавит новый элемент Listitem внизу, если вы вызовете его после выполнения вызова DataSource / DataBind, поэтому используйте myDropDownList.Товары.Вставить метод вместо, например...

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));

Добавит выпадающий список "Пожалуйста, выберите" вверху.

И, как уже упоминалось, в выпадающем списке всегда будет выбран ровно один элемент (я полагаю, что списки разные), и по умолчанию используется верхний элемент, если ни один из них не выбран явно.

Другие советы

Это можно установить Выбранный индекс свойство Выпадающий список до -1 (i.e.очистить выделение) с использованием клиентского скрипта:

<form id="form1" runat="server">
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Value="A"></asp:ListItem>
        <asp:ListItem Value="B"></asp:ListItem>
        <asp:ListItem Value="C"></asp:ListItem>
    </asp:DropDownList>
    <button id="СlearButton">Clear</button>
</form>

<script src="jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function()
    {
        $("#СlearButton").click(function()
        {
            $("#DropDownList1").attr("selectedIndex", -1); // pay attention to property casing
        })

        $("#ClearButton").click();
    })
</script>

Я читаю следующее:http://msdn.microsoft.com/en-us/library/a5kfekd2.aspx

В нем говорится:Чтобы получить значение индекса выбранного элемента, прочитайте значение свойства SelectedIndex.Индекс основан на нуле.Если ничего не было выбрано, значение свойства равно -1.

В то же время, в http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex(VS.80).aspx мы видим:

Используйте свойство SelectedIndex, чтобы программно указать или определить индекс выбранного элемента из элемента управления DropDownList.Элемент управления всегда выбирается в выпадающем списке.Вы не можете удалить выделение из каждого элемента в списке одновременно.

Возможно, значение -1 допустимо только для получения, а не для установки индекса?Если это так, я буду использовать ваш "патч".

Я почти уверен, что в выпадающем списке должен быть выбран какой-то элемент;Обычно я добавляю пустой элемент списка

this.myDropDownList.Элементы.Добавить("");

В качестве моего первого элемента списка и действуйте соответствующим образом.

SelectedIndex может быть равен -1 только при первой инициализации элемента управления и отсутствии элементов в коллекции.

Невозможно, чтобы ни один элемент не был выбран в веб-выпадающем списке, как это было бы в WinForm.

Я считаю, что лучше всего иметь:this.myDropDownList.Товары.Добавить(новый список("Пожалуйста, выберите ...", ""));

Таким образом, я сообщаю пользователю, что ему нужно выбрать элемент, и вы можете проверить SelectedIndex == 0 для проверки

  1. Создайте свой выпадающий список и укажите начальный элемент списка
  2. Установленный AppendDataBoundItems Для true таким образом, будут добавлены новые элементы.
<asp:DropDownList ID="YourID" DataSourceID="DSID" AppendDataBoundItems="true"> 
<asp:ListItem Text="All" Value="%"></asp:ListItem> 
</asp:DropDownList>

Пожалуйста, попробуйте приведенный ниже синтаксис:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Select"))

или

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("SelectText"))

или

DropDownList1.Items.FindByText("Select").selected =true

Для получения дополнительной информации :http://vimalpatelsai.blogspot.in/2012/07/dropdownlistselectedindex-1-problem.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top