(C# ASP Site) Right now I have a CheckBoxList that is prechecked, depending on what the user selects early in the form. Here’s the code to write the prechecks for reference. It works perfectly. Whenever a new prechecking happens cause by user selection => postback
DataTable DefaultActivity = GetData();
// Resets checkboxes to blank in between postbacks
for (int p = 0; p < CheckBoxList1.Items.Count; p++)
{
CheckBoxList1.Items[p].Selected = false;
}
// Fills in the prechecked boxes
if (DefaultActivity.Rows.Count > 0)
{
int SelectedRoleID = Int32.Parse(RadioButtonList2.SelectedValue);
for (int i = 0; i < DefaultActivity.Rows.Count; i++)
{
int DatabaseRoleID = Convert.ToInt32(DefaultActivity.Rows[i]["roleid"]);
if (SelectedRoleID == DatabaseRoleID)
{
int DatabaseActivityID = Convert.ToInt32(DefaultActivity.Rows[i]["activityid"]);
for (int j = 0; j < CheckBoxList1.Items.Count; j++)
{
if (DatabaseActivityID == Convert.ToInt32(CheckBoxList1.Items[j].Value))
{
CheckBoxList1.Items[j].Selected = true;
}
}
}
}
}
The problem I’m having is that the user should be able to check more boxes in addition to the prechecked boxes, but when they click the Submit Button, it does not detect the newly checked boxes. Here’s the Submit Button code.
// Data into the request table
SqlConnection sqlConn = new SqlConnection("Server=x;Database=x;User=x;Password=x;Trusted_Connection=False;");
string Statement = "INSERT INTO table (x) OUTPUT INSERTED.requestid VALUES (x)";
SqlCommand sqlComm = new SqlCommand(Statement, sqlConn);
// Grabs the auto-created RequestID to forward to the next page
sqlComm.Connection.Open();
string RequestID = Convert.ToString((Int32)sqlComm.ExecuteScalar());
sqlComm.Connection.Close();
sqlComm.Connection.Dispose();
// Data into the x table
SqlConnection ActivitysqlConn = new SqlConnection("Server=x;Database=x;User=x;Password=x;Trusted_Connection=False;");
string ActivityStatement = "INSERT INTO table (x) VALUES (x)";
for (int k = 0; k < CheckBoxList1.Items.Count; k++)
{
if (CheckBoxList1.Items[k].Selected == true)
{
SqlCommand ActivitysqlComm = new SqlCommand(ActivityStatement, ActivitysqlConn);
ActivitysqlComm.Connection.Open();
ActivitysqlComm.ExecuteNonQuery();
ActivitysqlComm.Connection.Close();
}
}
Response.Redirect("nextscreen.aspx?RequestID=" + RequestID);
Any ideas why the submit button can’t see the new checks? It reads the prechecks fine. Side question- is there a more efficient way to Opening/Closing the connections? Be nice, I’m new 🙂
Easy fix- I moved the prechecking code from PageLoad to the RadioButtonList, the object which affects the prechecking. Now all the prechecks and additional checks are properly saved.