2012-05-02 24 views
6

Form-ddl1 ve ddl2'mde iki tane dropdownlist var. Birlikte bir metin kutusunun görünürlüğünü belirlerler. Bunun için bu çeki yapın: Gördüğünüz gibiASP.NET - Kontrol açılır listesinin programsal olarak geri yüklenmesi

if (ddl1.SelectedIndex==2 && ddl2.SelectedIndex>2) 
    { 
    if (!txt1.Visible) 
     {txt1.Visible=true;// And then I want to call postback} 

    } 
else 
    { 
    if (txt1.Visible) 
     {txt1.Visible=false;// And then I want to call postback} 
    } 

, yukarıdaki condions geçerliyse, sunucuya sayfayı göndermek istiyorum. Yukarıdaki kod, her iki açılır listenin SelectedIndexChanged olayında tetiklenir. Bir koşula nasıl ulaşabilirim ya da başarabilirim?

+0

Sana ne yapmak istediğini anlayamıyorum ... işleri - Form zaten geri değiştirildi endeksi sonra nakledilmiş - tam olarak ne elde etmeye çalışıyorsun? –

+0

AutoPostBack'i false olarak ayarlıyorum. Yani indeksi değiştirdiğimde geri göndermiyor. –

+0

Doğru TAMAM, bu nedenle her zaman indeks değiştiğinde - sadece yukarıdaki koşullar yerine getirildiğinde, Geri Göndermek istemezsiniz? bu doğru mu? –

cevap

6

Ben senin sorunu anlamak emin değilim ama istiyorum: ASP.NET her zaman geri gönderme olduğunu, sadece aksi takdirde JavaScript doğrulama işlemek ve sayfayı el göndermek zorunda koşulu işlemek gerekir sadece belirli bir koşul yerine getirildiğinde geri gönderme yapmak için. her ikisinde de bir javascript işlevi kurabilirsiniz onchange = "return onchange();" Set Autopostback = true;

 function Onchange() { 
     var ddl1 = document.getElementById('<%= ddl1.ClientID %>'); 
     var ddl2 = document.getElementById('<%= ddl2.ClientID %>'); 
     var txtbox = document.getElementById('<%= txtbox.ClientID %>'); 
     if (ddl1.selectedIndex == 2 && ddl2.selectedIndex > 2) { 
      txtbox.style.display = "inline"; 
      __doPostBack(ddl1, ''); 
     } 
     else { 
      txtbox.style.display = "none"; 
      return false; 
     } 
    } 

Aspx kodu şöyle görünmelidir.

<asp:DropDownList runat="server" AutoPostBack="true" ID="ddl1" onchange="return Onchange();" 
      OnSelectedIndexChanged="ddl1_SelectedIndexChanged"> 
      <asp:ListItem Text="text1" /> 
      <asp:ListItem Text="text2" /> 
      <asp:ListItem Text="text3" /> 
      <asp:ListItem Text="text4" /> 
     </asp:DropDownList> 
     <asp:DropDownList runat="server" AutoPostBack="true" ID="ddl2" onchange="return Onchange();" 
      OnSelectedIndexChanged="ddl1_SelectedIndexChanged"> 
      <asp:ListItem Text="text1" /> 
      <asp:ListItem Text="text2" /> 
      <asp:ListItem Text="text3" /> 
      <asp:ListItem Text="text4" /> 
     </asp:DropDownList> 
     <asp:TextBox runat="server" ID="txtbox" /> 

bunu test ve

+0

Teşekkürler Kamran. Bu benim için iyi. –

1

AutoPostBack = True ise, olaylarınızın ateşlenmesinin gerekeceği durumunuz olması durumunda, durumunuz karşılandığında yalnızca bir funciton çağrısı yapın.

if (ddl1.SelectedIndex==2 && ddl2.SelectedIndex>2) 
    { 
     if (!txt1.Visible) 
     { 
      txt1.Visible=true;// And then I want to call postback 
      //dowork 
     } 

    } 
    else 
    { 
     if (txt1.Visible) 
     { 
      txt1.Visible=false;// And then I want to call postback 
      //do work 
     } 
    } 
+0

Şimdi SelectedIndexChanged olayının bir sunucu tarafı olayı olduğunu anlıyorum. Yani geri gönderme gerekli. Bunu yapmak için muhtemelen JavaScript'e ihtiyacım var ama nasıl olduğunu bilmiyorum. –