我有一个复选框,数据绑定到我的数据库中的一个字段,该字段位于数据库中。
这是我的复选框:
<asp:CheckBox ID="chkDownloaded" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem, "Downloaded")%>' />
当我运行代码时,我收到以下错误:
Specified cast is not valid.
知道如何解决这个问题吗?
谢谢!
答案 0 :(得分:3)
尝试
DataBinder.Eval(Container.DataItem, "Downloaded") ?? false
答案 1 :(得分:2)
您对Database
的请求应如下所示....
Select Cast(IsNull(Downloaded, 0) as bit) as Downloaded From TableName
在Business Logic Layer
的情况下,Convert
Downloaded
false
的{{1}}值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;
}
答案 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")%>' />