Private Sub Page_PreRenderComplete(sender As Object, e As System.EventArgs) Handles Me.PreRenderComplete Dim Basecase_ck As CheckBox = Basecase_CheckBox Dim Scenario1_ck As CheckBox = Scenario1_CheckBox Dim Scenario2_ck As CheckBox = Scenario2_CheckBox Dim Scenario3_ck As CheckBox = Scenario3_CheckBox Dim Scenario4_ck As CheckBox = Scenario4_CheckBox Dim Scenario5_ck As CheckBox = Scenario5_CheckBox Dim Scenario6_ck As CheckBox = Scenario6_CheckBox If Not User.IsInRole("CanEditBasecase") Then Basecase_ck.Enabled = False End If If Not User.IsInRole("CanEditScenario1") Then Scenario1_ck.Enabled = False End If If Not User.IsInRole("CanEditScenario2") Then Scenario2_ck.Enabled = False End If If Not User.IsInRole("CanEditScenario3") Then Scenario3_ck.Enabled = False End If If Not User.IsInRole("CanEditScenario4") Then Scenario4_ck.Enabled = False End If If Not User.IsInRole("CanEditScenario5") Then Scenario5_ck.Enabled = False End If If Not User.IsInRole("CanEditScenario6") Then Scenario6_ck.Enabled = False End If Dim oConn As New SqlConnection(ConfigurationManager.ConnectionStrings("sqlRTPConnectionString").ConnectionString) Dim oCommand As New SqlClient.SqlCommand("SELECT rtp_id, [basecase], scenario1, scenario2, scenario3, scenario4, scenario5, scenario6 FROM rtp_projects WHERE rtp_id = @rtp_id", oConn) oConn.Open() oCommand.Parameters.AddWithValue("@rtp_id", FormView1.SelectedValue) Dim oReader As SqlDataReader = oCommand.ExecuteReader oReader.Read() Basecase_ck.Checked = oReader("Basecase") Scenario1_ck.Checked = oReader("Scenario1") Scenario2_ck.Checked = oReader("Scenario2") Scenario3_ck.Checked = oReader("Scenario3") Scenario4_ck.Checked = oReader("Scenario4") Scenario5_ck.Checked = oReader("Scenario5") Scenario6_ck.Checked = oReader("Scenario6") oReader.Close() oCommand.Dispose() oConn.Close() End Suband updated with this:
Public Sub SaveCheckBoxes(sender As Object, e As EventArgs) Dim oConn As New SqlConnection(ConfigurationManager.ConnectionStrings("sqlRTPConnectionString").ConnectionString) Dim oCommand As New SqlClient.SqlCommand("", oConn) oConn.Open() Select Case sender.ID.ToString Case "Basecase_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [basecase] = @basecase WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@basecase", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) Case "Scenario1_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [Scenario1] = @Scenario1 WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@Scenario1", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) Case "Scenario2_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [Scenario2] = @Scenario2 WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@Scenario2", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) Case "Scenario3_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [Scenario3] = @Scenario3 WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@Scenario3", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) Case "Scenario4_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [Scenario4] = @Scenario4 WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@Scenario4", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) Case "Scenario5_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [Scenario5] = @Scenario5 WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@Scenario5", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) Case "Scenario6_CheckBox" oCommand.CommandText = "UPDATE [rtp_projects] SET [Scenario6] = @Scenario6 WHERE rtp_id = @rtp_id" oCommand.Parameters.AddWithValue("@Scenario6", sender.Checked) oCommand.Parameters.AddWithValue("@RTP_ID", FormView1.SelectedValue) End Select oCommand.ExecuteNonQuery() oCommand.Dispose() oConn.Close() 'MsgBox("Updated") End SubEach checkbox looks like this:
<asp:CheckBox ID="Basecase_CheckBox" runat="server" Enabled="true" Text="Basecase" OnCheckedChanged="SaveCheckBoxes" />This all works fine if all of the checkboxes are enabled. However, if a couple of them are disabled, as soon as I edit one of the remaining ones the status of the disabled ones goes to UnChecked and the table is updated to unchecked. I can't figure this out because there is NO binding and No call to the disabled checkboxes or their fields. I suspect it has something to do with viewstate but can't figure it out.