循环遍历复选框的ID,查看是否有任何复选框被选中。

7 浏览
0 Comments

循环遍历复选框的ID,查看是否有任何复选框被选中。

我有一个选举系统的选票,我需要循环遍历选票上的所有复选框,以查看它们是否被选中或未选中。您只能选择(例如)5个选项中的1个。我陷入困境,无法弄清楚这个问题。以下代码是用户单击提交按钮时运行的函数。

这段代码可以提交我的选票,但无法检查选中的复选框数量。

对于每个对象中的每一行

如果行(1) = ballot_ID,则

Dim checkBox_ID = 行(0)

Dim CB As New CheckBox()

CB = mainBallotDiv.FindControl(checkBox_ID)

如果 CB.Checked,则

Dim addVote As Integer = 行("votes")

addVote += 1

candidatesAdapter.addVoteToCandidate(addVote, 行(0))

Dim section_ID As Integer = 行(2)

Dim voter As String = userGnumber

Dim vote As Integer = checkBox_ID

Dim hasVoted As Boolean = True

votesAdapter.InsertVotes(ballot_ID, section_ID, voter, vote, hasVoted)

结束 如果

结束 如果

下一个

Response.Redirect("~/voting/voted.aspx")

我添加了一些东西来尝试使其正确运行,但没有成功,我的代码目前如下。

Dim checkedCount As Integer
    对于每个对象中的每一行
        如果行(1) = ballot_ID,则
            Dim checkBox_ID = 行(0)
            Dim CB As New CheckBox()
            CB = mainBallotDiv.FindControl(checkBox_ID)
            Dim section_idFromCB As Integer = candidatesAdapter.getsectionIDfromcandidateID(CB.ID)
            Dim voteLimit As Integer = sectionsAdapter.votesbysectionid(section_idFromCB)
            如果 CB.Checked,则
                checkedCount += 1
                Debug.Write(checkedCount)
                如果 checkedCount > voteLimit,则
                    ' 错误
                    Response.Write("")
                    Response.Redirect(Request.RawUrl)
                否则
                    ' 通过
                    对于每个对象中的每一行
                        如果 Nrow(1) = ballot_ID,则
                            Dim NcheckBox_ID = 行(0)
                            Dim NCB As New CheckBox()
                            NCB = mainBallotDiv.FindControl(NcheckBox_ID)
                            如果 NCB.Checked,则
                                Dim addVote As Integer = 行("votes")
                                addVote += 1
                                candidatesAdapter.addVoteToCandidate(addVote, 行(0))
                                Dim section_ID As Integer = 行(2)
                                Dim voter As String = userGnumber
                                Dim vote As Integer = checkBox_ID
                                Dim hasVoted As Boolean = True
                                votesAdapter.InsertVotes(ballot_ID, section_ID, voter, vote, hasVoted)
                            结束 如果
                        结束 如果
                    下一个
                    Response.Redirect("~/voting/voted.aspx")
                结束 如果
            结束 如果
        结束 如果
    下一个

将不胜感激,提前感谢您的帮助。

0
0 Comments

问题的出现原因:

这个问题的出现原因是因为回答中的代码片段没有提供解释,只有代码本身,没有解释为什么要使用这个特定的解决方案。没有解释为什么这个解决方案对于其他人来说是有效的,也没有解释解决方案的原理。

解决方法:

为了解决这个问题,回答者应该提供一些解释,解释为什么要使用这段代码,以及这段代码的原理和工作方式。这样其他人才能理解这个解决方案,并判断它是否适用于他们自己的问题。

以下是对问题的出现原因和解决方法的整理:

问题的出现原因是回答中的代码片段没有提供解释,只有代码本身,没有解释为什么要使用这个特定的解决方案。没有解释为什么这个解决方案对于其他人来说是有效的,也没有解释解决方案的原理。

为了解决这个问题,回答者应该提供一些解释,解释为什么要使用这段代码,以及这段代码的原理和工作方式。这样其他人才能理解这个解决方案,并判断它是否适用于他们自己的问题。

0
0 Comments

问题的出现原因:

需要遍历复选框的ID,以检查是否有任何复选框被选中。可能是因为需要在代码中对选中的复选框进行进一步处理或执行特定操作。

解决方法:

可以将复选框放入一个 List(Of CheckBox) 中,然后根据需要随时访问它们以及获取所需的任何属性。

具体实现代码如下:

Dim lstChecked As New List(Of CheckBox)
lstChecked = divcontrol.Controls.OfType(Of CheckBox).Where(Function(ch) ch.Checked = True).ToList

以上代码中,`divcontrol` 是包含复选框的容器控件(如一个 DIV),`lstChecked` 是一个存储选中复选框的 List(Of CheckBox)。通过使用 `OfType(Of CheckBox)` 方法,可以获取容器控件中所有的复选框控件。然后使用 `Where(Function(ch) ch.Checked = True)` 条件筛选出选中状态为 True 的复选框,并最终将它们存储在 `lstChecked` 中。

这样,`lstChecked` 就是一个包含所有选中复选框的 List(Of CheckBox) 对象。可以根据需要进一步处理这些复选框,执行相应的操作。

0