2012-09-21 16 views
7

मेरे पास asp.net में एक ड्रॉप डाउन सूची है जब मैं किसी विकल्प पर क्लिक करता हूं, तो मुझे चयनित मान प्राप्त करना चाहिए और फिर इसे डेटाबेस में पास करना चाहिए और बाद में क्वेरी परिणामों का उपयोग पॉप्युलेट करने के लिए करना चाहिए एक दूसरी ड्रॉप डाउन सूची।विकल्प का चयन करें ड्रॉपडाउनलिस्ट सी # एएसपी.नेट फायर इवेंट

मुझे लगता है कि जब मैं पहली ड्रॉप डाउन मेनू पर क्लिक करता हूं तो मैं इस घटना को "आग" करने में सक्षम नहीं हूं। नीचे मैं क्या है:

ASPX कोड

<td class="style3"> 
       <asp:DropDownList ID="Currencies" runat="server" 
        onselectedindexchanged="Currencies_SelectedIndexChanged"> 
       </asp:DropDownList> 
      </td> 
      <td> 
       &nbsp;</td> 
     </tr> 
     <tr> 
      <td class="style2"> 
       Payment Mode</td> 
      <td class="style3"> 
       <asp:DropDownList ID="PaymentModes" runat="server"> 
       </asp:DropDownList> 
      </td> 

codebehind कोड सी #

String conn = WebConfigurationManager.ConnectionStrings["pvconn"].ToString(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     populatecurrencylist(); 

    } 

    public void populatecurrencylist() 
    { 
     SqlCommand sql = new SqlCommand("SELECT * FROM CURRENCIES_TBL ORDER BY Currency_Initials",new SqlConnection(conn)); 
     sql.Connection.Open(); 
     SqlDataReader listcurrencies; 
     listcurrencies = sql.ExecuteReader(); 
     Currencies.DataSource = listcurrencies; 
     Currencies.DataTextField = "Currency_Initials"; 
     Currencies.DataValueField = "Currency_Group_ID"; 
     Currencies.DataBind(); 
     sql.Connection.Close(); 
     sql.Connection.Dispose(); 
    } 

    protected void TextBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 
    protected void Currencies_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var currid = Currencies.SelectedValue; 
     HttpContext.Current.Response.Write(currid); 
     //int currid = 0; 
     try 
     { 
      SqlCommand sql = new SqlCommand("SELECT * FROM PAYMENT_MODES_TBL WHERE Currency_ID = @currencyid", new SqlConnection(conn)); 
      SqlParameter param0 = new SqlParameter(); 
      param0.ParameterName = "@currencyid"; 
      param0.SqlDbType = System.Data.SqlDbType.Int; 
      param0.Value = currid; 

      sql.Parameters.Add(param0); 
      sql.Connection.Open(); 
      SqlDataReader listpaymodes; 
      listpaymodes = sql.ExecuteReader(); 
      PaymentModes.DataSource = listpaymodes; 
      PaymentModes.DataTextField = "Payment_Mode"; 
      PaymentModes.DataValueField = "Paying_Account_Code"; 
      PaymentModes.DataBind(); 
      sql.Connection.Close(); 
      sql.Connection.Dispose(); 
     } 
     catch(Exception s) 
     { 
      HttpContext.Current.Response.Write("Error Occured " + s.Message); 
     }    
    } 

मैं एक समस्या के बिना पहली dropdownlist पॉप्युलेट कर सकते हैं। दूसरा ऐसा लगता है जो काम नहीं करता है। एएसपी.नेट में बहुत नया। मैं एक PHP पृष्ठभूमि से आया हूं जहां यह jquery AJAX का उपयोग करके आसानी से हासिल किया जाएगा, लेकिन मैं सी # सीखना चाहता हूं।

किसी भी मदद की सराहना की।

संपादित

सभी जवाब है कि मैं मुद्राओं AutoPostBack = true को ड्रॉपडाउन सूची बनाने मुझे लगता है कि किया है सुझाव देते हैं:

<asp:DropDownList ID="Currencies" runat="server" AutoPostBack="True" 
        onselectedindexchanged="Currencies_SelectedIndexChanged"> 
       </asp:DropDownList> 

लेकिन यह अभी भी काम करने के लिए नहीं लगता है। एक तरफ ध्यान दें, पेज रीलोड और मेरा चयन मेनू विकल्प पहले विकल्प पर रीसेट हो जाता है।

+0

ऑटोपोस्टबैक संपत्ति को सत्य में जोड़ें। –

+0

मेरा जवाब अपडेट किया गया। –

उत्तर

10

बदलें

<asp:DropDownList ID="Currencies" runat="server" 
        onselectedindexchanged="Currencies_SelectedIndexChanged"> 
       </asp:DropDownList> 

करने के लिए
<asp:DropDownList ID="Currencies" runat="server" AutoPostBack="True" 
        onselectedindexchanged="Currencies_SelectedIndexChanged"> 
       </asp:DropDownList> 

अद्यतन

अपने प्रश्न का अद्यतन, आपकी नई जानकारी के बाद।

बदलें इस:

protected void Page_Load(object sender, EventArgs e) 
    { 
     populatecurrencylist(); 

    } 
इस के लिए

:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) { 
     populatecurrencylist(); 
     } 

    } 
3

सुनिश्चित करें कि आपकी ड्रॉपडाउन सूची CurrenciesAutoPostBack="True" को तैयार है।

जैसा कि आप इन चीजों के लिए नए हैं। नीचे दिए गए लिंक के माध्यम से जाएं।

http://asp-net-example.blogspot.in/2009/03/how-to-use-dropdownlist-autopostback.html

इस कड़ी में मदद मिल सकती आप

+0

कृपया संपादित करें देखें – MaxI

2

मुद्राओं लटकती Autopostback यह सच है बनाओ।

2

डिफ़ॉल्ट रूप से AutoPostBackDropDownList की संपत्ति झूठी है।

सत्य अगर सर्वर पर एक पोस्टबैक स्वचालित रूप से तब होता है जब उपयोगकर्ता सूची का चयन बदलता है; अन्यथा, झूठी। डिफ़ॉल्ट गलत है।

यह निर्दिष्ट के रूप में सच:

<asp:DropDownList ... AutoPostBack="True" ...> 
    ... 
</asp:DropDownList> 

यदि इससे भी काम नहीं होता है यह हो सकता है कि आप एक UpdatePanel भीतर नियंत्रण है और एक ट्रिगर निर्दिष्ट करने की आवश्यकता है।

0

आपको केवल ऑटोपोस्टबैक = सही सेट करने की आवश्यकता है।

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