这有点傻,但我有一个 DetailsView,它使用 sqlDataSource 绑定到我的数据库中的一条记录。我的问题是我绑定的字段是一个位字段(即 1 或 0),目前允许空值。我意识到这需要改变,但我还需要能够在 GUI 端处理 DBNull,以便应用程序自动知道如果值为 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>
在查看模式下一切正常,但是当我单击详细视图控件上的编辑链接时,我收到以下错误:
对象不能从 DBNull 转换为其他类型。
有什么建议么?
更新:
我需要通过 Bind() 而不是 Eval() 使用 2 路绑定,因为详细信息视图执行对所选记录的更新。如果我将 Convert.ToBoolean() 与 Bind 一起使用,则会抛出异常。我最终可能会使用 CheckboxField。有人会认为会有一种简单的方法来处理这个问题,但我很不幸找到了一个。