2016-01-22 62 views
1

我得到网格视图选中复选框关闭数据库值

指定的转换的错误是无效

,当我尝试运行我的语法。我想要做的是,如果数据库中的值是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> 

凡在上面的例子中,abcefgCompleted是数据库中的所有领域。

+0

你有没有尝试过这样的事情:'选中= '<%#Convert.ToBoolean(EVAL( “已完成”))%>''? – zgood

回答

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>