将一个位数据绑定到复选框

时间:2012-07-26 21:08:34

标签: c# asp.net

我有一个复选框,数据绑定到我的数据库中的一个字段,该字段位于数据库中。

这是我的复选框:

<asp:CheckBox ID="chkDownloaded" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem, "Downloaded")%>' />

当我运行代码时,我收到以下错误:

Specified cast is not valid.

知道如何解决这个问题吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

尝试

DataBinder.Eval(Container.DataItem, "Downloaded") ?? false

答案 1 :(得分:2)

选项#1

您对Database的请求应如下所示....

Select Cast(IsNull(Downloaded, 0) as bit) as Downloaded From TableName

选项#2

Business Logic Layer的情况下,Convert Downloaded false的{​​{1}}值Null

选项#3

protected void GridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    CheckBox c = e.Row.FindControl("chkDownloaded");
    (((YourClassName)e.Row.DataItem).YourPropertyName) == null ? false : ((YourClassName)e.Row.DataItem).YourPropertyName;
}

答案 2 :(得分:1)

你必须将它转换为boolean并绑定

这样

<asp:CheckBox ID="chkDownloaded" 
runat="server" 
Checked='<%#Eval("Downloaded").ToString() == "1")%>' />

答案 3 :(得分:0)

尝试:

<%#DataBinder.Eval(Container.DataItem, "Downloaded")!=0%>

答案 4 :(得分:-1)

不是ASP.NET专家,但如果列可以为空,那么

Checked='<%#(Eval("Downloaded") ?? 0).ToString() == "1")%>' />