2008-09-17 4 views
8

Я просто хочу ASP.NET DropDownList без выбранного элемента. Настройка SelectedIndex на -1 пока не помогло. Я использую Framework 3.5 с AJAX, т. Е. Этот DropDownList находится в пределах UpdatePanel. Вот что я делаю:"DropDownList.SelectedIndex = -1" проблема

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"); 
    } 

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

ответ

17

Голые в виду myDropDownList.Items.Add добавит новый элемент ListItem на дне, если вы называете его после выполнения DataSource/DataBind называют поэтому используйте метод myDropDownList.Items.Insert вместо например ...

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

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

Будет добавлен элемент «Пожалуйста, выберите» в верхней части.

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

2

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

this.myDropDownList.Items.Add ("");

Как мой первый элемент списка и действуйте соответственно.

2

Выбранное значениеIndex может быть только -1, когда элемент управления сначала инициализирован, и в коллекции нет элементов.

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

Я считаю, что лучше всего: this.myDropDownList.Items.Add (новый ListItem («Пожалуйста, выберите ...», «»));

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

4

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

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

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

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

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

5

Можно установить SelectedIndex собственностью DropDownList до -1 (. Е.ясно, выбор), используя клиентский сценарий:

<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> 
+3

небольшой комментарий: с JQuery 1.6 или более новой, $ (элем) .attr ("SelectedIndex") больше не будет работать, потому что SelectedIndex это свойство, а не атрибут. Вместо этого используйте $ (emel) .prop ("selectedIndex", -1). – qualbeen 2012-01-30 14:20:03

0

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^