2011-07-19 20 views
5

Otomatik olarak bir sqlDataSource'a sayfa yüklemesinde istemci türünün değerlerine bağlı olan bir asp.net dropDownList'im var. Sayfa yüklenirken de bir Client nesnesi oluşturuyorum, özelliklerinden biri de ClientType. Ddl'nin SelectedValue değerini, Client nesnesinin ClientType özelliğinin değerine göre başarısız olarak ayarlamaya çalışıyorum. Aşağıdaki hata iletisini "System.ArgumentOutOfOfRangeException: 'ddlClientType' öğelerinin listesinde bulunmadığından geçersiz olan bir SelectedValue var" aldım. Bunun, seçili değeri ayarlamaya çalıştığımda listenin henüz doldurulmadığı için olduğunu anlıyorum. Bu sorunun üstesinden gelmenin bir yolu var mı? Teşekkür ederim! Eğer gerçekten o zaman ayarlamadan önce DataBind() yöntemini çağırın Sayfa yükleme durumunda değerini görmek isterseniz bağlamadaSeçilen Bağlantının Ayarlanması Seçilen bir verinin gönderilmesi DropDownList

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

tamamlandıktan sonra sen veri sınırlama olay kullanmak zorunda

+2

Bazı kodlar gönderir misiniz? –

cevap

5

, o ateş olacak değeri ...

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

Bunu denedim ve hala aynı hata mesajını aldım. –

+0

Düzenleme bölümümü kontrol et. –

+0

DataBound olayını kullanarak tekrar denedim ve artık hata mesajını almıyorum ama değer seçilmedi. –

4

madde listesinde olup daha endeksine göre seçmek ister seçilmiş bir değer çek ayarlamadan önce

<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; 
    } 
} 

DÜZENLEME:

  • Taşı overriden DataBind() yöntemle
  • tüm bağlayıcı ilgili kodu: Sayfa Yük bağlama şeyler yapıyorsanız eklendi ...

    , bu şekilde takip etmeye Page_Load içinde: Sayfa Ekleme: (denetim durumunda DataBind directrly'i çağırmayın, bu bir üst sayfanın sorumluluğundadır)

if (!IsPostBack) 
{ 
    Page.DataBind(); // only for pages 
}