我有一个复选框,它数据绑定到我的数据库中的一个字段,并且该字段在数据库中有点。
这是我的复选框:
<asp:CheckBox ID="chkDownloaded" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem, "Downloaded")%>' />
当我运行代码时,出现以下错误:
Specified cast is not valid.
知道如何解决这个问题吗?
谢谢!
尝试
DataBinder.Eval(Container.DataItem, "Downloaded") ?? false
您的要求Database
应如下所示....
Select Cast(IsNull(Downloaded, 0) as bit) as Downloaded From TableName
在 的情况下Business Logic Layer
Convert
的Downloaded
值。false
Null
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;
}
您必须将其转换为布尔值并绑定
这边走
<asp:CheckBox ID="chkDownloaded"
runat="server"
Checked='<%#Eval("Downloaded").ToString() == "1")%>' />
尝试:
<%#DataBinder.Eval(Container.DataItem, "Downloaded")!=0%>
不是 ASP.NET 专家,但如果该列可以为空,那么
Checked='<%#(Eval("Downloaded") ?? 0).ToString() == "1")%>' />