2012-05-02 16 views
6

मेरे पास मेरे फॉर्म-डीडीएल 1 और डीडीएल 2 पर दो ड्रॉपडाउनलिस्ट हैं। वे एक साथ टेक्स्टबॉक्स -txt1 की दृश्यता निर्धारित करते हैं। उसके लिए मैं इस जांच:एएसपी.नेट - नियंत्रण ड्रॉपडाउन सूची पोस्टबैक प्रोग्रामेटिक

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

आप देख सकते हैं, मैं सिर्फ अगर ऊपर condions सत्य हैं सर्वर से पेज पोस्ट करना चाहते हैं। उपरोक्त कोड दोनों ड्रॉपडाउनलिस्टों के चयनित इंडेक्स चेंज किए गए ईवेंट पर ट्रिगर किया गया है। मैं किसी शर्त पर कैसे हासिल कर सकता हूं?

+0

मुझे समझ नहीं आता कि आप क्या करना चाहते हैं - प्रपत्र पहले से ही वापस सूचकांक बदल गया था के बाद नियुक्त किया गया है - वास्तव में क्या आप प्राप्त करने की कोशिश कर रहे हैं? –

+0

मैंने ऑटोपोस्टबैक को गलत पर सेट कर दिया है। तो जब मैं इंडेक्स बदलता हूं तो यह पोस्टबैक नहीं करता है। –

+0

ठीक है, तो आप सूचकांक में हर बार पोस्टबैक नहीं करना चाहते हैं - केवल तभी जब उपर्युक्त शर्तों को पूरा किया जाता है? क्या वो सही है? –

उत्तर

6

मुझे यकीन है कि अगर मैं आपकी समस्या को समझ में नहीं हूँ, लेकिन आप चाहते हैं केवल कुछ शर्त मिलने पर पोस्टबैक प्राप्त करने के लिए। आप ड्रॉपडाउन ऑनचेंज = "रिटर्न ऑनचेंज();" पर एक जावास्क्रिप्ट फ़ंक्शन को हुक कर सकते हैं। सेट ऑटोपॉस्टबैक = सत्य;

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

एएसपीएक्स कोड इस तरह दिखना चाहिए।

<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" /> 

यह परीक्षण किया गया और यह काम करता ...

+0

धन्यवाद कामरान। मेरे लिए यह ठीक रहेगा। –

1

यदि ऑटोपोस्टबैक = सही है, तो यह आपके कार्यक्रमों के लिए फायरिंग होने के लिए होना होगा, जब आपकी हालत पूरी हो जाती है तो बस एक funciton को कॉल करें। ASP.NET हमेशा वापस पोस्ट कर रहा है, तो आप सिर्फ हालत को संभालने के लिए की जरूरत है, अन्यथा आप जावास्क्रिप्ट के साथ मान्यता को संभालने के लिए और मैन्युअल रूप से पेज पोस्ट है:

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

अब मुझे एहसास है कि चयनित इंडेक्स चेंजेड इवेंट एक सर्वर साइड इवेंट है। तो पोस्टबैक की आवश्यकता है। मुझे शायद ऐसा करने के लिए जावास्क्रिप्ट की आवश्यकता है लेकिन यह नहीं पता कि कैसे। –

संबंधित मुद्दे