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 の専門家ではありませんが、列が null 許容の場合

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