UpdatePanel नियंत्रण के माध्यम से लूप

मैं एएसपीनेट में एक अद्यतन पैनल के भीतर नियंत्रण के माध्यम से कैसे लूप कर सकते हैं? मैं vb.net के साथ वीएस 2010 का उपयोग कर रहा हूं और मेरे पेज में एक अपडेट पैनल है जिसमें 10 चेक बॉक्स लगाए गए हैं, मुझे फ़ोरैच लूप में चेकबॉक्स आईडी प्राप्त करने की आवश्यकता है।

For Each ChkBox In UpdatePanel1.ContentTemplateContainer.Controls.OfType(Of CheckBox)()
      If ChkBox.Checked = True Then 
           Session("TaskName") = ChkBox.Text 
                     Else 
      End If
Next
0
आपकी समस्या का क्या समस्या है?
जोड़ा लेखक User7291, स्रोत
कोशिश कर रहा हूँ यह कोड है
जोड़ा लेखक Suren, स्रोत
जबकि कोड में ब्रेक पॉइंट डाला और चेक किया कि यह लूप के भीतर नहीं जायेगा, यह लूप से छोड़ा गया था।
जोड़ा लेखक Suren, स्रोत

2 उत्तर

निम्नलिखित आपके द्वारा निर्दिष्ट रूट नियंत्रण को फिर से खोजेगा, जिस प्रकार के नियंत्रण को आप इसे बताते हैं:

Public Shared Sub FindControlsRecursive(root As Control, type As Type, ByRef list As List(Of Control))
    If root.Controls.Count <> 0 Then
        For Each theControl As Control In root.Controls
            If theControl.GetType() = type Then
                list.Add(theControl)
            ElseIf theControl.HasControls Then
                FindControlsRecursive(theControl, type, list)
            End If
        Next
    End If
End Sub

उपयोग:

Dim checkboxes As New List(Of CheckBox)
FindControlRecursive(UpdatePanel1, GetType(CheckBox), checkboxes)

अब आप प्रत्येक चेकबॉक्स के माध्यम से लूप कर सकते हैं, इस तरह:

Dim checkboxIds As New List(Of Integer) 
For Each theCheckBox As CheckBox In checkboxes
    ' Grab ID here
    checkboxIds.Add(Convert.ToInt32(theCheckBox.ID))
Next
0
जोड़ा

अपडेट पैनलों में एक आंतरिक ContentTemplate है जिसमें आपके द्वारा देखे जा रहे नियंत्रण होते हैं।

संक्षेप में, आप कार्ल एंडरसन द्वारा दिए गए उत्तर के लिए ऐसा कर सकते हैं, जिसे सामग्री टेम्पलेट के लिए एक बार कहा जाता है और उसके बाद पिछले आउटपुट का उपयोग करके चेकबॉक्स नियंत्रण के लिए; हालांकि मैंने इस विधि का परीक्षण नहीं किया है।

हालांकि, नीचे दिया गया कोड आपके प्रश्न के लिए सचमुच काम करता है:

'get internal ContentTemplate for the parent update panel
For Each contenttemplate As Control In upnlStages.Controls

    For Each checkbox As CheckBox In contenttemplate.Controls.OfType(Of CheckBox)()
        'do whatever you want with the individual contro
        if checkbox.checked and instr(checkbox.ID, "chkQuestion1") = 1 then
            'do stuff
        end if

    Next

Next
0
जोड़ा