2012-05-24 16 views
6

मैं एक ग्रिडव्यू और sqldatasource का उपयोग कर रहा हूँ।ड्रॉपडाउन सूची में पंक्ति सूचकांक कैसे प्राप्त करें IndexChanged?

मेरे पास 2 ग्रिडव्यू में 2 मानों के साथ एक ड्रॉपडाउन सूची है: हां और नहीं।

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    GridViewRow row = GridView1.Rows[e.RowIndex]; 
    DropDownList ddl = ((DropDownList)row.FindControl("DropdownList1")); 
    if(ddl.selectedvalue == "1") 
     //etc.. 
} 

मैं क्योंकि इस GridViewRow row = GridView1.Rows[e.RowIndex]; वर्तमान घटना में उपलब्ध नहीं है पंक्ति सूचकांक प्राप्त करने की आवश्यकता।

+1

बस एक यूआई मुद्दा, यदि आप केवल दो मानों आप एक RadioButtonList का उपयोग करना चाहिए है। एक ड्रॉपडाउनलिस्ट को दो क्लिक की आवश्यकता होगी, जहां एक रेडियोबटन सूची के लिए केवल एक की आवश्यकता होती है। –

उत्तर

19

@mellamokb पहले ही उल्लेख किया गया है, तो आप हमेशा नियंत्रण है कि प्रेषक द्वारा एक घटना उठाया मिल तर्क, आपको केवल तदनुसार इसे कास्ट करना होगा।

DropDownList ddl = (DropDownList)sender; 

आप भी DropDownList की GridViewRow (या एक GridView की एक TemplateField में किसी भी अन्य नियंत्रण) के लिए एक संदर्भ प्राप्त करने की आवश्यकता है, तो आप NamingContainer संपत्ति का उपयोग कर सकते हैं।

GridViewRow row = (GridViewRow)ddl.NamingContainer; 

लेकिन मैं एक TemplateField जो एक लटकती नहीं है से एक मूल्य प्राप्त करने के लिए पंक्ति सूचकांक प्राप्त करने की आवश्यकता एक पाठ बॉक्स एक बार आप का उपयोग करके GridViewRow संदर्भ है

आप किसी भी नियंत्रण प्राप्त कर सकते है row.FindControl("ID") (टेम्पलेटफ़िल्ल्ड) या row.Cells[index].Controls[0] (बाउंडफ़िल्ल्ड)।

उदाहरण के लिए (यह मानते हुए एक और स्तंभ में है एक TextBox):

TextBox txtName = (TextBox)row.FindControl("TxtName"); 
+0

धन्यवाद, ठीक है, लेकिन मुझे एक टेम्पलेटफील्ड से मूल्य प्राप्त करने के लिए पंक्ति अनुक्रमणिका प्राप्त करने की आवश्यकता है जो ड्रॉपडाउन नहीं है एक टेक्स्टबॉक्स है। – Jax

+0

@jax: मेरा जवाब संपादित किया। –

4

यदि सब आप देख रहे हैं dropdownlist का मूल्य है, कि के रूप में पास है sender:

DropDownList ddl = sender as DropDownList; 
if (ddl.SelectedValue == "1") 
    // do something... 
+0

ने यह काम किया, लेकिन क्या आप जानते हैं कि मैं पंक्ति कैसे प्राप्त कर सकता हूं? क्योंकि मुझे एक ही घटना में टेम्पलेटफील्ड का मूल्य प्राप्त करने की आवश्यकता है: उदाहरण के लिए यह पंक्ति अद्यतन करने वाली घटना में है: स्ट्रिंग डीएस = ((टेक्स्टबॉक्स) पंक्ति। कैल्स [6] .इंडकंट्रोल ("TXT"))। टेक्स्ट; – Jax

+0

मुझे लगता है कि आप 'ddl. parent' कर सकते हैं, या यह 'ddl.Parent.Parent' हो सकता है। आपको ग्रिड व्यूरो खोजने के लिए पदानुक्रम में कितने स्तरों का उपयोग करना होगा, इसका प्रयोग करना होगा। – mellamokb

+0

मैं ड्रॉपडाउन पंक्ति प्राप्त करने का इरादा नहीं रख रहा हूं, मुझे टेम्पलेटफील्ड से मूल्य प्राप्त करने के लिए केवल पंक्ति संपादन अनुक्रमणिका की आवश्यकता है। – Jax

1
Protected Sub ddlneedlocationcmf_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) 
    Dim gvrow As GridViewRow = CType(sender, DropDownList).NamingContainer 
    Dim rowindex As Integer = CType(gvrow, GridViewRow).RowIndex 


End Sub 
+2

उत्तर पोस्ट करने के लिए धन्यवाद! जबकि एक कोड स्निपेट सवाल का जवाब दे सकता है, लेकिन अभी भी कुछ अतिरिक्त जानकारी, जैसे व्याख्या, इत्यादि जोड़ना बहुत अच्छा है .. – j0k

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