将Checkbox Template Field中的值插入sql数据库字段类型Bit

时间:2011-04-21 12:28:06

标签: c# asp.net

我有一个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数据库字段?感谢任何帮助,提前谢谢!

1 个答案:

答案 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添加值。