2011-12-01 32 views
3

我有一個ASP.NET DropDownList這是由一個XML文件填充一個問題:爲什麼我的DropDownList的SelectedItem不起作用?

rblState.DataSource = dsState; 
rblState.DataValueField = "abbreviation"; 
rblState.DataTextField = "name"; 
rblState.DataBind(); 

這工作正常,但是並顯示所有正確的數據,當我嘗試和檢索所選值出現問題從列表中點擊按鈕後:

string state = rblState.SelectedItem.Text; 
Console.WriteLine(state); 

這總是隻輸出列表中的第一個值。

任何人都知道這個解決方案嗎?

+1

這是下拉的'AutoPostBack'屬性設置爲true? – MilkyWayJoe

回答

8

您可能重新綁定了回發站上的DataSource

//only bind on the first request 
if (!Page.IsPostBack) 
{ 
    rblState.DataSource = dsState; 
    rblState.DataValueField = "abbreviation"; 
    rblState.DataTextField = "name"; 
    rblState.DataBind(); 

} 
+1

感謝你們的幫助,這工作,不知道爲什麼我沒有想到之前 – RyanDreggs

2

嘗試把你的填充碼

if (!Page.IsPostBack) 
{ 
    //your code here 
} 
+0

這個答案已經列出。 – akdora

0

貴控制有runat="server"屬性集?那個人肯定會在一個點或另一個點上咬住我們所有人。

另外,我相信你必須設置你的AutoPostBack="true",所以當你改變一個列表項時它會通知服務器。否則,我相信你必須得到它的客戶端,如果它沒有用新選擇的選項更新服務器。

0

與任何變量一樣,在嘗試調用子屬性之前,應該始終檢查它們。

檢查SelectedIndex != -1以確保選擇了一個值或檢查以確保SelectedItem != null

確保您僅在頁面第一次加載時綁定您的DropDownList(如Kemal所述)。