チェックボックスフィールドを含むフォームがあります。ページの読み込み時に、データベース内の顧客ごとに個別のチェックボックスを作成したいと考えています。顧客ごとにチェックボックスを作成する必要があるコードは正常に機能します。ただし、顧客が無許可に設定されているかどうかをデータベースで確認したい場合は、そこにチェックを入れたいと思います。ユーザーがボックスをチェックした場合のコードもあります。ボックスがチェックされている場合は、無許可属性を true に設定してデータベースを更新します。私の問題は、ボックスをチェックすると正常に機能し、ボックスがチェックされているのに、ページをリロードするとすべてのボックスがチェックされていないことです。したがって、データベースの更新がデータベースを更新していないか、ページの読み込み時にチェックボックスをチェックする方法が正しくありません。何か案は?
asp チェックボックス フィールドのコード:
<asp:CheckBoxList id="check1" AutoPostBack="True" TextAlign="Right" OnSelectedIndexChanged="Check" runat="server">
</asp:CheckBoxList>
ページ読み込みのコード:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim sql As String = "SELECT Name, unauthorized, ID FROM Customer ORDER BY Name"
Dim dt As DataTable = db.execDataTableQuery(sql, "Customer")
Dim i As Integer
For i = 0 To dt.Rows.Count - 1
check1.Items.Add(New ListItem(CStr(dt.Rows(i).Item("Name"))))
check1.Items(i).Value = CInt(dt.Rows(i).Item("ID"))
check1.Items(i).Text = CStr(dt.Rows(i).Item("Name"))
If CInt(dt.Rows(i).Item("unauthorized")) = 1 Then
check1.Items(i).Selected = 1
Else
check1.Items(i).Selected = 0
End If
Next
End Sub
データベースを更新するコード:
Sub Check(ByVal sender As Object, ByVal e As EventArgs)
Dim sql As String
If check1.SelectedItem.Selected = 1 Then
sql = "UPDATE Customer SET unauthorized = 1 WHERE ID = @ID"
db.execUpdateQuery(sql, New SqlClient.SqlParameter("@ID", check1.SelectedItem.Value))
Else
sql = "UPDATE Customer SET unauthorized = 0 WHERE ID = @ID"
db.execUpdateQuery(sql, New SqlClient.SqlParameter("@ID", check1.SelectedItem.Value))
End If
End Sub
End Class