2009-05-26 12 views
6

मैं एक साधारण dropdownlist (FFG) है ...चयनित मान के एएसपी में परिवर्तन नहीं करता है: DropDownList

<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true" BackColor="LightSteelBlue" Font-Size="X-Small" 
    OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged1" Style="z-index: 102; left: 37px; position: absolute; top: 85px" Width="331px" 
    </asp:DropDownList> 

जो मैं डेटा बाँध onpageload घटना usind करने के लिए ...

DropDownList2.DataSource = td.DataSet 
DropDownList2.DataSource = td 
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString 
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString 
DropDownList2.DataBind() 

और एक onleselectedindexchaged घटना जहां मैं इस तरह नया मान पुनर्प्राप्त करने का प्रयास करें ...

Protected Sub DropDownList2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList2.TextChanged 
     Dim url As String = "sp_menu.aspx?sp=" & DropDownList2.SelectedValue 
     Session.Remove("sp") 
     Session("sp") = DropDownList2.SelectedValue 
     Session("spnm") = DropDownList2.SelectedItem.Text & " (" & DropDownList2.Text & ")" 
     Response.Redirect(url) 
    End Sub 

लेकिन यह हमेशा पहले valu लाता है ई कोई फर्क नहीं पड़ता कि ड्रॉपडाउन सूची पर कौन सा क्लिक किया गया है। कृपया मदद करें!

+0

कृपया अपना कोड प्रारूपित करें! –

+0

यदि वह उदाहरण सही है तो आपने ईवेंट हैंडलर को DropDownList2_SelectedIndexChanged1 होने के लिए निर्दिष्ट किया है लेकिन आपका कोड DropDownList2_TextChanged में है। गलत हैंडलर को पोस्ट में या सिर्फ एक टाइपो कहा जा रहा है? – Trotts

+0

टेक्स्टचार्ज एक विकल्प था जिसे मैं कोशिश कर रहा था, मेरा कोड DropDownList2_SelectedIndexChanged1 –

उत्तर

3

आप

DropDownList2.SelectedItem.Value 
बजाय

DropDownList2.SelectedItem.Text 
10

ठीक है ... कुछ चीजें इस्तेमाल करने की कोशिश कर सकते हैं ...

पहले DropDownList2_TextChanged तो अपने DropDownList में तार नहीं है मैं नहीं देख सकता कि यह घटना तब तक कैसे आग लगती है जब तक कि आप अपने कोडबेयर

में वायरअप कर रहे हों

दूसरा

आप कहते हैं कि यहाँ

DropDownList2.DataSource = td.DataSet 
DropDownList2.DataSource = td 
DropDownList2.DataTextField = td.Columns("Name").ColumnName.ToString 
DropDownList2.DataValueField = td.Columns("VendorCode").ColumnName.ToString 
DropDownList2.DataBind() 

इस कोड को अपने Pageload स्थिति में है। क्या आपने इसे If Not IsPostBack, में लपेट लिया है क्योंकि यदि नहीं, तो आप हर बार पुनर्विचार करेंगे, और अपना पिछला चयन खो देंगे।

+0

में है, यदि मैंने इसे पोस्ट नहीं किया है, तो मैंने इसे किसी अन्य पृष्ठ पर रीडायरेक्ट नहीं किया है ... मैं इसे लपेटने की कोशिश करूंगा और फिर आपके पास वापस आता हूँ। –

+0

हाय। आपकी मदद के लिए बहुत बहुत शुक्रिया। ऐसा लगता है कि मुझे इसे अगर नहीं है तो पोस्टबैक में लपेटने की ज़रूरत है। अब यह पूरी तरह से काम करता है। मुझे पता नहीं था कि पोस्ट बैक होता है भले ही कोई ईवेंट हुआ हो (जिसमें उपयोगकर्ता को किसी दूसरे पेज पर रीडायरेक्ट किया जाता है।) कूल ... –

+0

कोई समस्या नहीं है। तार्किक रूप से, क्या हो रहा है, चयनित इंडेक्स बदल गया है, जो एक ही पेज पर __doPostBack के साथ कुछ जावास्क्रिप्ट को निकाल देता है। पेज_लोड इवेंट आग लगती है, तो आप चयनित इंडेक्स चेंज इवेंट फ़ायर होते हैं, और फिर आप अगले पृष्ठ पर रीडायरेक्ट करते हैं। –

5

जब आप पेज_लोड में डेटाबेसिंग कर रहे हैं, तो आप अनिवार्य रूप से चयनितिट को रीसेट कर रहे हैं।

आपको के अंदर पेज_लोड में जो कुछ भी बाध्यकारी कोड मौजूद है, उसे लपेटना चाहिए (! IsPostBack) ब्लॉक।

संपादित करें: ... या यदि पोस्ट नहीं है तो ... अंत में यदि वीबी.नेट

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