2017-06-13 15 views
0

私は選挙システム用の投票用紙を持っています。投票がチェックされているかチェックされていないかチェックするために、使用可能な5つのボックスのうち1つ(たとえば)しか選択できません。私は立ち往生していて、私の人生ではこれを理解できません。次のコードは、ユーザーが送信ボタンをクリックしたときに実行されるmy関数です。チェックボックスがオンになっているかどうかを確認するループチェックボックス

このコードは私の投票を行い、提出しますが、チェックされたチェックボックスの数はチェックしません。

For Each row As Object In candidatesTable.Rows 
    If row(1) = ballot_ID Then 
     Dim checkBox_ID = row(0) 
     Dim CB As New CheckBox() 
     CB = mainBallotDiv.FindControl(checkBox_ID) 

     If CB.Checked Then 
      Dim addVote As Integer = row("votes") 
      addVote += 1 
      candidatesAdapter.addVoteToCandidate(addVote, row(0)) 
      Dim section_ID As Integer = row(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) 
     End If 
    End If 
Next 
Response.Redirect("~/voting/voted.aspx") 

私はこれを正しく実行するためにいくつかのことを追加しましたが、幸運はありません。私のコードは現在以下の通りです。

Dim checkedCount As Integer 
    For Each row As Object In candidatesTable.Rows 
     If row(1) = ballot_ID Then 
      Dim checkBox_ID = row(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) 

      If CB.Checked Then 
       checkedCount += 1 
       Debug.Write(checkedCount) 
       If checkedCount > voteLimit Then 
        ' error 
        Response.Write("<script language=""javascript"">alert('You can not select that many check boxes.');</script>") 
        Response.Redirect(Request.RawUrl) 

       Else 
        ' pass 

        For Each Nrow As Object In candidatesTable.Rows 
         If Nrow(1) = ballot_ID Then 
          Dim NcheckBox_ID = row(0) 
          Dim NCB As New CheckBox() 
          NCB = mainBallotDiv.FindControl(NcheckBox_ID) 
          If NCB.Checked Then 
           Dim addVote As Integer = row("votes") 
           addVote += 1 
           candidatesAdapter.addVoteToCandidate(addVote, row(0)) 
           Dim section_ID As Integer = row(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) 
          End If 
         End If 
        Next 
        Response.Redirect("~/voting/voted.aspx") 
       End If 
      End If 
     End If 
    Next 

すべてのヘルプは大歓迎、と事前に感謝されるだろう。ここで

+0

だろう。 –

答えて

-2
For Each checkBox In Me.Controls.OfType(Of CheckBox) 
    ' do something 
Next 
+0

あなたたちに間違っています....なぜdownvoting? –

+4

コードスニペットはうまくいますが、コードスニペットが何をしているのかについての説明をしなくても、答えは実際にはあまり価値がないので、あなたが投票されたと信じています。 –

+0

あなたは私を冗談にしています。どのような説明は、単純で単純な英語のコードの畳み込まれた単一の行に必要です。 –

1

が私のオススメです...

あなたは、あなたが、必要に応じていつでもそれらにアクセスするだけでなく、あなたが必要となる任意のプロパティを取得することができますList(Of CheckBox)でそれらを置くことができます。

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

lstChecked Directcastも便利来るかもしれないがチェックされます任意のCheckBox ...

+1

ありがとうございます。 – JayyCodez

関連する問題