查找带有id的thats复选框

时间:2015-06-19 09:43:25

标签: asp.net vb.net

我正在尝试循环使用以特定ID开头的一系列复选框。

这段代码似乎正常,但它找不到任何东西:

SELECT sum1, sum2
FROM   t1
JOIN   (SELECT c1, 
               SUM(CASE WHEN c3 = 'NEW' AND c5 = 'N' THEN c1 
                        ELSE NULL END) AS sum1,
               SUM(CASE WHEN c3 = 'OLD' THEN c2 
                        ELSE NULL END) AS sum2
        FROM   t2
        WHERE  c4 = TRUNC(SYSDATE)) t2 ON t1.c1 = t2.c1
WHERE  t1.c2 IN ('DUMMY', 'DUMMY2')

它在第二行说明了

    Dim childc As Control
    Dim c as Control
    For Each c In Me.Page.Controls
        For Each childc In c.Controls
            If TypeOf childc Is CheckBox Then
                If CType(childc, CheckBox).Checked Then
                    If childc.ID.StartsWith("ctl00_indexBody_ID_ACTIVITE_") Then
                        i = i + 1
                        Alerte(CType(childc, CheckBox).Text)
                        strSQL = "INSERT INTO A_ACTIVITES VALUES("
                        strSQL += Me.ID_PRESTATAIRE.Text + "," + childc.ID + ","
                        strSQL += ")"
                        oWebConnection.Execute(strSQL)
                    End If
                End If
            End If
        Next
    Next

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

cchildc声明为Control,而不是CheckBox

c的声明不可见,但我认为你犯了同样的错误。

答案 1 :(得分:0)

我找到了解决方案

Protected Sub GererActivite(ByVal oControls As ControlCollection)
    Dim oControl As Control
    For Each oControl In oControls
        If oControl.HasControls Then
            GererActivite(oControl.Controls) ' récursivité
        ElseIf TypeOf oControl Is CheckBox Then
            If CType(oControl, CheckBox).Checked Then
                If CType(oControl, CheckBox).Text.StartsWith("ctl00_indexBody_ID_ACTIVITE_") Then

                End If

            End If
        End If
    Next

End Sub

此函数通过控件Collection运行,如果此集合的控件具有控件,我将使用相同的函数运行这些控件,直到它找到一个没有控件的控件,如果它是一个复选框,我可以按我的意愿检查它。 它就像一个魅力。

事实上,这是我的老板的想法,我只是吹牛,哈哈。

希望它能帮助别人。