我有一个gridview,它有一个Checkbox模板字段,我正在使用C#代码,基本上当用户检查datagrid视图中的所有Checkbox时,我想将这些值添加到一个数据类型字段为Bit的SQL数据库中。 这是我到目前为止的代码;
protected void SaveRegisterButton_Click(object sender, EventArgs e)
{
SqlConnection connection;
SqlCommand command;
int numRowsAdded;
int id;
Boolean AttendanceChecked;
foreach (GridViewRow row in GridView2.Rows)
{
if (((CheckBox)row.FindControl("AttendanceCheckBox")).Checked)
{
try
{
// Connecting to the database using the connection string in the web.config file
connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
// Create an INSERT Sql statement
// To prevent an Sql injection attack, we add parameters with names starting with an @ symbol
command = new SqlCommand("INSERT INTO Attendance(Present, StudentID, LessonID) VALUES(@AttendanceChecked, @StudentID, @LessonID)",
// Replace the parameters with the actual values read from the form
//command.Parameters.AddWithValue("AttendanceChecked", AttendanceCheckBox);
如何将复选框控件的值传递到数据类型为Bit的sql数据库字段?感谢任何帮助,提前谢谢!
答案 0 :(得分:1)
首先,如果找不到复选框(例如,如果它是页眉/页脚),下面的代码将抛出一个空引用异常。
if (((CheckBox)row.FindControl("AttendanceCheckBox")).Checked)
您可以在位字段中存储的唯一内容是1或0,而复选框的“值”是文本。您是否真的想根据值是否选中要保存的值来选择要保存的值?请详细说明。
根据您的更新,请尝试以下代码:
foreach (GridViewRow row in GridView2.Rows)
{
CheckBox AttendanceCheckBox = row.FindControl("AttendanceCheckBox") as CheckBox;
if (AttendanceCheckBox != null)
{
try
{
connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["RegisterConnectionString"].ConnectionString);
SqlCommand command = new SqlCommand("INSERT INTO Attendance(Present, StudentID, LessonID) VALUES(@AttendanceChecked, @StudentID, @LessonID)");
command.Parameters.AddWithValue("@AttendanceCheck",AttendanceCheckBox.Checked);
您还需要使用相同的command.Parameters.AddWithValue
方法为@StudentID和@LessonID添加值。