网格视图复选框已选中数据库值

本文关键字:数据库 视图 复选框 网格 | 更新日期: 2023-09-27 18:31:25

>我得到一个错误

指定的强制转换无效

当我尝试运行语法时。 我想做的是,如果数据库中的值是,请选中复选框,如果为否,则不要选中该复选框。 这是我的 HTML,显示了我如何尝试这样做:

<asp:GridView runat="server" ID="dg123" AutoGenerateColumns="false" CssClass="DataGrids" GridLines="Both" ShowFooter="true">
<FooterStyle CssClass="DataGridFooters" /><HeaderStyle CssClass="DataGridHeaders" />
<Columns>
<asp:BoundField DataField="abc" HeaderText="Alpha" />
<asp:BoundField DataField="efg" HeaderText="Echo" />
<asp:TemplateField>
    <ItemTemplate><asp:CheckBox ID="Completed" runat="server" Checked='<%#Eval ("Completed") %>'/></ItemTemplate>
</asp:TemplateField>
</Columns>

在上面的示例中,abc efgCompleted 都是数据库中的字段。

网格视图复选框已选中数据库值

您必须进行以下更改才能完成此操作。

我假设数据项Completed的值为 yesno

  1. 将以下方法添加到代码隐藏。此方法返回对应于字符串值 yesno 的布尔值。此方法必须返回布尔类型,否则您将获得强制转换异常,因为您要绑定到的属性,即 Checked是布尔类型。

    public bool GetBoolValue(string val)
    {
        if (val.ToLower() == "yes") {
             return true;
          } else {
        return false;
       }
      return false;
    }
    
  2. 在标记中,将复选框的标记更改为下面给出的内容。

    <ItemTemplate>
       <asp:CheckBox ID="Completed" runat="server" 
          Checked='<%# GetBoolValue(Eval("Completed").ToString()) %>'/>
    </ItemTemplate>