1

当我选中数据类型为位的复选框时,它的值(即 1 或 0)没有存储在数据库中,它给出了错误

将 varchar 值“System.Web.UI.WebControls.CheckBox”转换为数据类型位时转换失败

if (CheckBoxDT.Checked) 
{ 
    cmd.CommandText = " Insert into ClientMaster(doTips) values ( 1 )";    
    cmd.Parameters.AddWithValue("doTips", bool.Parse("1")); 
    cmd.ExecuteNonQuery(); 
} 
else 
{ 
    cmd.CommandText = "insert into ClientMaster(doTips) values (0)";
    cmd.Parameters.AddWithValue("doTips", bool.Parse("0")); 
    cmd.ExecuteNonQuery(); 
} 
4

3 回答 3

3

将位值插入数据库

  cmd.Parameters.Add("@check", SqlDbType.Bit).Value = Convert.ToInt16(CheckBoxDT.Checked);

检索选定的复选框 试试这个

<asp:CheckBox ID="CheckBoxDT" runat="server" Checked='<%#((bool)Eval("isActive"))%>'
                        Style="color: #FFFFFF" />

在此处输入图像描述

你的代码

if (CheckBoxDT.Checked) 
{ 
cmd.CommandText = " Insert into ClientMaster(doTips) values ( 1 )";    
cmd.Parameters.AddWithValue("doTips", bool.Parse("1")); 
cmd.ExecuteNonQuery(); 
} 
else 
{ 
cmd.CommandText = "insert into ClientMaster(doTips) values (0)"; 
cmd.Parameters.AddWithValue("doTips", bool.Parse("0")); 
cmd.ExecuteNonQuery(); 
}

将此替换为

cmd.CommandText = "insert into ClientMaster(doTips) values (@doTips)"; 
cmd.Parameters.Add("@doTips", SqlDbType.Bit).Value = Convert.ToInt16(CheckBoxDT.Checked)
cmd.ExecuteNonQuery(); 
于 2013-02-18T08:43:00.037 回答
1

您可能正在传递控件,而不是其状态的值;您应该传递状态,并在必要时显式转换:

CheckBox         // a web control, and no standard db type to represent it
CheckBox.Checked // a boolean value, generally translatable to db bit
于 2013-02-18T08:23:48.047 回答
0

您很可能将实际控制权传递给您的数据库,而不是它的状态。您需要使用myCheckBox.Checked而不仅仅是myCheckBox.

于 2013-02-18T08:25:00.520 回答