得到错误-对象不能从DBNull强制转换为其他类型.在编辑数据类型为位的状态列时

本文关键字:编辑 类型 其他 数据类型 状态 转换 对象 错误 不能 DBNull | 更新日期: 2023-09-27 18:17:44

当编辑状态列网格视图时,我得到这个错误-对象不能从DBNull转换为其他类型。我在表中新添加了一列状态(位,null),因此状态列具有空值。绑定状态列时出现NULL值错误。

<asp:TemplateField HeaderText="status">
                        <ItemTemplate>
                        <asp:Label ID="lblstatus" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "status") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                        <asp:CheckBox ID="chkEditStatus" runat="server" Checked='<%# Convert.ToBoolean(Eval("status")) %>' />
                        </EditItemTemplate>
                        <FooterTemplate>
                        <asp:CheckBox ID="chkAddStatus" runat="server" Checked='<%# Convert.ToBoolean(Eval("status")) %>' />
                        </FooterTemplate>
                    </asp:TemplateField>

如何编辑edititem模板,以便在编辑网格时不会出现此错误?

得到错误-对象不能从DBNull强制转换为其他类型.在编辑数据类型为位的状态列时

这是因为您正在尝试将DBNull转换为布尔值,您需要在检索数据时检查这一点,并在从DB获取数据时相应地进行计算:-

bool status = reader["status"] is DBNull ? false : Convert.ToBoolean(reader["status"]);