使用MySQL的ASP .NET - 使用TINYINT和asp:Checkbox

时间:2009-09-09 14:23:23

标签: asp.net mysql

对于我的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值作为整数值绑定回数据库?

3 个答案:

答案 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") %>'  />