2012-04-27 44 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因爲它是沒有必要的。

當我點擊回發按鈕時,selecteditem的值仍然是DropDownList中第一項的值。我錯過了什麼?

備註 請停止回覆和編輯帖子。我們可能會保留它,因爲它已經被回答了。

回答

31

如果你在數據綁定Page_Load,你試試以下基本上也重置SelectedItem。

您應該將Page_Load中存在的任何綁定代碼包裝在if(!IsPostBack)塊中。

if(!Page.IsPostBack) 
{ 

    // Your binding code here ... 

} 
+3

dammit。我沒有注意到這一點。謝謝 – Bahamut 2012-04-27 04:05:38

4

您的代碼可能在執行回發後執行,清除方塊,從而失去選擇和所有內容。

如果是這樣,請嘗試將代碼包裝在if(!Page.IsPostBack) { ... }之類的東西中。

-2

是你缺少添加下拉列表的AutoPostBack =真..

請在.aspx頁面

+0

這將強制回發每次選擇一個項目... – 2012-04-27 04:03:33

-1

嘿嘿第一個索引添加所有不需要添加。你需要插入特定索引號

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

這個答案不會有任何區別,因爲它只是添加一個項目。問題已經得到解答,謝謝。 – Bahamut 2012-04-27 13:01:38

0

所以這個答案是最明顯的解決方案。但是,還有一個更令人驚訝的問題可能導致此問題!我的列表值來自數據庫,值有換行和回車:「\ r \ n」。這些值看起來像一個無辜的空間,但實際上他們不是!我的解決方案是刪除這些隱藏的Char值。希望能幫助到你。