2011-07-19 93 views
5

我有一個asp.net dropDownList它自動綁定到一個sqlDataSource的客戶端類型的值在頁面加載。在頁面加載時,我也創建了一個Client對象,其中一個屬性是ClientType。我試圖根據Client對象的ClientType屬性的值設置ddl的SelectedValue失敗。我收到以下錯誤消息「System.ArgumentOutOfRangeException:'ddlClientType'有一個無效的SelectedValue,因爲它不存在於項目列表中」。我知道這是因爲當我嘗試設置選定的值時,列表尚未填充。有沒有辦法克服這個問題?謝謝!設置數據綁定的SelectedValue DropDownList

+2

你能發表一些代碼嗎? –

回答

5

您必須使用數據綁定事件,它會被解僱,一旦綁定完成

protected void DropDownList1_DataBound(object sender, EventArgs e) 
{ 
    // You need to set the Selected value here... 
} 

如果你真的想看到在頁面加載事件的值,然後設置前致電DataBind()方法值...

protected void Page_Load(object sender, EventArgs e) 
{ 
    DropdownList1.DataBind(); 
    DropdownList1.SelectedValue = "Value"; 
} 
+0

我試過了,仍然收到相同的錯誤信息。 –

+0

檢查我的編輯部分。 –

+0

我再次嘗試使用dataBound事件,我不再收到錯誤消息,但未選擇該值。 –

4

之前設置所選值檢查項目是否在列表中按索引選擇它

<asp:DropDownList id="dropDownList" 
        AutoPostBack="True" 
        OnDataBound="OnListDataBound" 
        runat="server /> 
protected void OnListDataBound(object sender, EventArgs e) 
{ 
    int itemIndex = dropDownList.Items.IndexOf(itemToSelect); 
    if (itemIndex >= 0) 
    { 
     dropDownList.SelectedItemIndex = itemIndex; 
    } 
} 

編輯:添加...

如果在頁面加載做綁定的東西,嘗試按照這種方式:

  • 移動在被覆蓋的DataBind()方法
  • 所有綁定相關的代碼在Page_Load中加入:(在控件不直接調用DataBind的情況下,這是父頁的責任)
if (!IsPostBack) 
{ 
    Page.DataBind(); // only for pages 
} 
相關問題