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

时间:2016-01-22 15:59:49

标签: c# asp.net checkbox

我收到错误

  

指定的演员表无效

当我尝试运行我的语法时。我想要做的是,如果数据库中的值为yes,请选中复选框,如果不是,则不要选中该复选框。这是我的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都是数据库中的所有字段。

1 个答案:

答案 0 :(得分:0)

您必须进行以下更改才能使其正常工作。

我假设数据项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>