4

我有一个复选框,它数据绑定到我的数据库中的一个字段,并且该字段在数据库中有点。

这是我的复选框:

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

当我运行代码时,出现以下错误:

Specified cast is not valid.

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

谢谢!

4

5 回答 5

3

尝试

DataBinder.Eval(Container.DataItem, "Downloaded") ?? false
于 2012-07-26T21:13:29.770 回答
2

选项1

您的要求Database应如下所示....

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

选项 #2

在 的情况下Business Logic Layer ConvertDownloaded值。falseNull

选项#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;
}
于 2012-07-26T21:19:17.453 回答
1

您必须将其转换为布尔值并绑定

这边走

<asp:CheckBox ID="chkDownloaded" 
runat="server" 
Checked='<%#Eval("Downloaded").ToString() == "1")%>' />
于 2012-07-26T21:13:40.430 回答
0

尝试:

<%#DataBinder.Eval(Container.DataItem, "Downloaded")!=0%>
于 2012-07-26T21:15:42.900 回答
-1

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

Checked='<%#(Eval("Downloaded") ?? 0).ToString() == "1")%>' /> 
于 2012-07-26T21:22:08.110 回答