对于我的ASP .NET网页,我使用带有TINYINT字段的MySQL数据库来表示布尔值(0/1)。
感谢stackoverflow,我能够将字段值作为asp:Checkbox读入Listview。
<asp:CheckBox ID="freight_foundCheckbox" runat="server"
Checked='<%# Convert.ToBoolean(Eval("freight_found")) %>' />
现在挑战我的是如何在 InsertItemTemplate 或 EditItemTemplate 中撤销交易。
列表视图文本框显示为:
<asp:TextBox ID="freight_foundTextBox" runat="server"
Text='<%# Bind("freight_found") %>' />
如何将asp:Checkbox值作为整数值绑定回数据库?
答案 0 :(得分:2)
此网站link text对解决此问题非常有帮助。
关键是在写入数据库之前捕获值并将其转换为MySQL友好格式。
因此,对于插入,使用以下代码设置 ItemInserting 事件:
CheckBox freightFound = (CheckBox)ListView2.InsertItem.FindControl("freight_foundCheckbox");
if (freightFound.Checked == true)
{
//true
e.Values["freight_found"] = 1;
}
else
{
//false
e.Values["freight_found"] = 0;
}
然后为编辑设置 ItemUpdating 事件。
CheckBox freightFound = (CheckBox)ListView2.EditItem.FindControl("freight_foundCheckbox");
if (freightFound.Checked == true)
{
//true
e.NewValues["freight_found"] = 1;
}
else
{
//false
e.NewValues["freight_found"] = 0;
}
答案 1 :(得分:1)
我知道这已经很老了,但我只花了几个小时试图让它排序。
在您的UPDATE或INSERT语句中,您可以使用此
如果(?= '真',1,0)
无需将绑定的复选框字段更改为项目模板或任何内容。
我不确定这是否重要,但我将参数类型更改为布尔值,因为我现在已将其工作,我不想更改它。
答案 2 :(得分:0)
这里有点晚了,但为什么不直接将它绑定到复选框而不是文本字段?这种方式不需要处理代码。见下文。 MySQL tinyint(1)在使用MySQL Connector / .NET时直接转换为.NET boolean并返回。
<asp:CheckBox ID="freight_foundCheckbox" runat="server"
Checked='<%# Bind("freight_found") %>' />