ページにCheckBoxListがありますが、動作がよくありません。
フォームの送信ボタンをクリックすると、アプリは特定のユーザーに関連するすべての行のデータベーステーブルをクリアし、ユーザーのCheckBoxListの選択に基づいて新しい行を再挿入する必要があります。
問題は、CheckBoxList内の項目のいずれか(またはすべて)が選択されているかどうかに関係なく、アプリが取得し続けることSelected = False
です。
これが私のコードです:
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
loadRegions()
End Sub
Private Sub loadRegions()
Dim db As New Database
Dim sql As String = "select * from regions"
Dim dr As MySqlDataReader = db.execDB(sql, "Text", Nothing, "DataReader", False)
If dr.HasRows Then
cblRegion.DataSource = dr
cblRegion.DataTextField = "regionname"
cblRegion.DataValueField = "regionid"
cblRegion.DataBind()
End If
dr.Close()
End Sub
Protected Sub btnRegister_Click(sender As Object, e As System.EventArgs) Handles btnRegister.Click
' ============================================================
' There's more code in here, but it's irrelevant to this paste
' ============================================================
Dim sql As String = "delete from userregions where userid = " & lblUserID.Text & ";"
For i As Integer = 0 To cblRegion.Items.Count - 1
If cblRegion.Items(i).Selected Then
sql &= "insert into userregions (userid, regionid)" & _
"values(" & UserID & ", " & cblRegion.Items(i).Value & ")"
db.execDB(sql, "Text", Nothing, "None", False)
End If
Next
End Sub
記録のために、
私はここでSQLインジェクションの可能性を認識しています。ループが機能するようになったらすぐに、パラメータの使用に移ります。
御時間ありがとうございます。どんな助けでも大歓迎です。