簡體   English   中英

將varchar值'System.Web.UI.WebControls.CheckBox'轉換為數據類型位時轉換失敗

[英]Conversion failed when converting the varchar value 'System.Web.UI.WebControls.CheckBox' to data type bit

當我檢查其數據類型為bit的復選框時,其值(即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(); 
} 

將位值插入數據庫

  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(); 

你有可能通過控制,而不是其狀態的價值; 你應該傳遞狀態,並在必要時明確轉換它:

CheckBox         // a web control, and no standard db type to represent it
CheckBox.Checked // a boolean value, generally translatable to db bit

您很可能將實際控件傳遞給數據庫而不是它的狀態。 您需要使用myCheckBox.Checked而不僅僅是myCheckBox

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM