绑定到详细信息视图控件中的复选框时,将DBNull转换为布尔值

gsi*_*nni 3 c# asp.net dbnull detailsview sqldatasource

这有点傻但我有一个DetailsView,它使用sqlDataSource绑定到我的数据库中的记录.我的问题是我绑定的字段是一个位字段,(i,e 1或0),目前允许空值.我意识到这需要改变,但我还需要能够在GUI端处理DBNulls,以便应用程序自动知道如果值为DBNull,则将复选框的Checked属性设置为"false".目前我的模板字段看起来像这样.

 </asp:TemplateField>
   <asp:TemplateField HeaderText="Car:" HeaderStyle-Width="15%" ItemStyle-Width="85%">
  <ItemTemplate>
    <asp:Label ID="lblIsCar" runat="server" Text='<%#  Eval("isCar") %>' />
  </ItemTemplate>
  <EditItemTemplate>
    <asp:CheckBox ID="ckIsCar" runat="server"  Checked='<%#  Convert.ToBoolean(Eval("isCar"))%>' />
  </EditItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)

在View模式下一切正常,但是当我单击详细信息视图控件上的Edit链接时,我收到以下错误:

无法将对象从DBNull强制转换为其他类型.

有什么建议?

更新:

我需要通过Bind()而不是Eval()来使用2路绑定,因为详细信息视图会对所选记录执行更新.如果我在绑定时使用Convert.ToBoolean(),则会抛出异常.我最终可能会使用CheckboxField.人们会认为有一种简单的方法可以解决这个问题,但我找不到它是不吉利的.

Jef*_*ata 15

您可以尝试条件检查DBNull.Value:

Eval("isCar") == DBNull.Value ? false : Convert.ToBoolean(Eval("isCar"))
Run Code Online (Sandbox Code Playgroud)