2016-03-30 26 views
0

Bu Sayı çözüldü, yazı aşağıda benim yorumu görmekASP.NET DropDownList.SelectedValue i kaybolur nPostBack

beni puzzeling benim koduyla bir sorun var:! I (Bir ASP.NET DropDownList var Basit, bir gridview değil ya da ...) bu statik bir veritabanı sorgusuna bağlı. Ayrıca, ben işaretlemesinde bir liste öğesi eklemek:

<asp:DropDownList ID="ddDeviceSelector" runat="server" DataSourceID="CryringDB_InventoryAssets" DataTextField="Identifier" DataValueField="RowID" AutoPostBack="True" OnTextChanged="ddDeviceSelector_IndexChanged" ToolTip="Select a device by name" AppendDataBoundItems="True" Width="300px"> 
    <asp:ListItem>-- Select Device OR Enter Data of New Device --</asp:ListItem> 
</asp:DropDownList> 
<asp:SqlDataSource ID="CryringDB_InventoryAssets" runat="server" connectionString="<%$ ConnectionStrings:CMSValuesExplicitUser %>" SelectCommand="SELECT valueColumn, textColumns FROM myTable"></asp:SqlDataSource> 

Ben bir sorgu parametresi ile sayfayı çağırabilir "? Kurtulmak = ..." kurtulmak listesinde belirli bir öğenin değerini içerir nerede. Çözmeyi çözmeye çalıştığımda ve listedeki öğeyi değer olarak seçtiğimde, DropDownList.SelectedValue ayarlanmaz. Page_Load Kodu: E hata ayıklayıcı (çizgi sonra kesme "ddDeviceSelector.SelectedValue = rowID;") bir hata mesajı görüntülenir

protected void Page_Load(object sender, EventArgs e) 
    { 
     // Code to interpret the parameter rid (RowID) in the URL 
     // provides functionality to open formAssetDetails of an individual object. 
     if (!IsPostBack) 
     { 
      ddDeviceSelector.DataBind(); 
      setUiPropertiesByMode(classConstants.displayMode); 

      String rowID = null; 
      rowID = Request.QueryString["rid"]; 

      if (rowID != null) 
      { 
       setUiPropertiesByMode(classConstants.editMode); 
       ddDeviceSelector.Enabled = true; 
       ddDeviceSelector.Enabled = true; 
       ddDeviceSelector.SelectedValue = rowID; 
      } 
     } 

kod sorunu olmadan çalışır, ancak

hata CS0103: adı 'SelectedValue' (Bu mesajı Almanca'dan çevrilmiştir ve İngilizce göze hitap eden farklı olabilir) geçerli bağlam

içinde yok

Herhangi bir yardım için teşekkür ederiz.

+0

sorun çözüldü: Yukarıdaki sayfa/kodu çağırmak için kullandığım URL'de, parametre atlaması UPPERCASE dizesi (veritabanı düzeyinde benzersiz bir belirleyici) olarak iletildi. Çalışma zamanında, DropDown öğelerinin öğeleri küçüktü, bu nedenle SelectedValue (büyük/küçük harfe duyarlı) eşleşmedi. Kod değiştirildi: (rowID! = Null) { rowID = rowID.ToLower(); ddDeviceSelector.Enabled = true; ddDeviceSelector.SelectedValue = rowID; setAssetValuesByRowID (rowID); } – WolfiG

cevap

0

Eğer SelectedValue ayarlamak çalışmadan önce dropdownlist verilerle tamamen veri sınırlama olmasını sağlayacaktır dropdownlist arasında veri sınırlama olay seçilen değeri ayarlamayı deneyin, ayrıca bu yöntemi devretmek unutmayın:

//In your designer file 
ddDeviceSelector.DataBound += new System.EventHandler(ddDeviceSelector_DataBound); 

protected void ddDeviceSelector_DataBound(object sender, EventArgs e) 
{ 
    String rowID = null; 
    rowID = Request.QueryString["rid"]; 

    if (rowID != null) 
    { 
     setUiPropertiesByMode(classConstants.editMode); 
     ddDeviceSelector.Enabled = true; 
     ddDeviceSelector.Enabled = true; 
     ddDeviceSelector.SelectedValue = rowID; 
    } 
} 
+0

Merhaba James, cevabınız için teşekkürler. Ne yazık ki işe yaramadı :( – WolfiG

+0

Aynı hata mı yapıyor? –

+0

Oh - üzgünüm, bu hatanın benim bir hatadan kaynaklandığını görüyorum: Ben izlemek için yanlış değişkeni seçtim ... Yine de, SelectValue ddDeviceSelector öğelerini kontrol ettim - seçmek istediğim öğe var, ancak seçilen değeri ayarladıktan sonra bir "DataBind()" yaparsam, program "listede olmayan değer" ile çakılır. – WolfiG