2012-04-27 5 views
11

разметку:Asp.NET DropDownList SelectedItem.Value не изменяя

  <div style="float:left;margin-top:15px;width:80px"> 
       <asp:DropDownList ID="MyList" runat="server" Width="100px"></asp:DropDownList> 
      </div> 

код:

 // clear vehicles list 
     MyList.Items.Clear(); 

     // add 'all' option 
     MyList.Items.Add(new ListItem("ALL", "0")); 

     // add assets 
     foreach (CustomClass item in items) 
      MyList.Items.Add(new ListItem(item.Name, item.ID.ToString())); 

Нет событий запуска для SelectedIndexChanged, так как в этом нет необходимости.

Когда я нажимаю кнопку для обратной передачи, значение выбранного элемента остается значением первого элемента в DropDownList. Что мне не хватает?

ПРИМЕЧАНИЕ Пожалуйста, прекратите отвечать и редактировать сообщения. Мы можем оставить его как есть, так как он уже был дан ответ.

ответ

31

Если вы в Page_Load привязки данных, вы по сути, также сброс SelectedItem.

Вы должны обернуть любой код привязки, который существует в Page_Load внутри блока if(!IsPostBack).

if(!Page.IsPostBack) 
{ 

    // Your binding code here ... 

} 
+3

dammit. Я этого не заметил. спасибо – Bahamut

4

Ваш код, вероятно, выполняется после обратной передачи, очищая поле, отсюда теряя выделение и все.

Если да, попробуйте обернуть код чем-то вроде if(!Page.IsPostBack) { ... }.

-2

Да вам не хватает, чтобы добавить выпадающий список AutoPostBack = истинный ..

Пожалуйста, попробуйте следующее в вашем .aspx странице

+0

Это заставит обратную передачу каждый раз, когда элемент будет выбран ... –

-1

эй для первого индекса, чтобы добавить все, что не требуется добавлять. вам необходимо ввести конкретный индексный номер

MyList.Items.Insert(0, "ALL"); 
+1

Этот ответ не будет иметь никакого значения, поскольку он просто добавляет элемент. Вопрос уже был дан, спасибо. – Bahamut

0

Так что этот ответ является «очевидным» решением самой распространенной причины. Однако есть еще одна удивительная проблема, которая может вызвать это! Значения моих списков были получены из базы данных, а значения имели возврат строки и возврат каретки: «\ r \ n». Эти ценности выглядят как невинное пространство, но на самом деле это не так! Моим решением было удалить эти скрытые значения Char. Надеюсь, поможет.