2009-06-18 71 views
3

我有一個ASP.NET webform,我使用DropDownList控件來允許用戶選擇一個項目並查看相關結果。出於某種原因,當我設置DropDownList的SelectedValue屬性時,它設置的值不可立即使用。ASP.NET DropDownList SelectedValue屬性沒有立即設置

這裏是我的代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     DropDownList1.SelectedValue = "5"; 
     BindView(); 
    } 
} 

protected void BindActivities() 
{ 
    DataClassesDataContext dc = new DataClassesDataContext(); 
    var query = from activity in dc.Activities 
       where activity.AssignedTo == Convert.ToInt32(DropDownList1.SelectedValue); 
    GridView1.DataSource = query; 
    GridView1.DataBind(); 
} 

在上面的代碼我得到一個錯誤,DropDownList1.SelectedValue爲空。奇怪的是,如果我將使用DropDownList1.SelectedValue的代碼註釋掉並讓頁面加載,則DropDownList1實際上被設置爲值5.因此,它看起來已經正確設置,但不是立即可用。調試器確認DropDownList.SelectedValue沒有在設置它的代碼行之後立即設置爲5。

任何想法發生了什麼?

回答

7

您是否在綁定下拉列表之前設置了值?

+1

DropDownList正在聲明性綁定到LinqDataSource控件。我認爲想法發生在Page_Load事件之前。那是對的嗎? – joshb 2009-06-18 14:22:15

2

是用戶上面是正確

if (!Page.IsPostBack) 
{ 
    BindView(); 
    DropDownList1.SelectedValue = "5"; 
} 

...應該只是罰款。

有沒有這樣的事情延遲執行,只是執行的順序。