C# 将Gridview中的列转换为复选框

C# 将Gridview中的列转换为复选框,c#,asp.net,gridview,checkbox,C#,Asp.net,Gridview,Checkbox,我有一个gridview,它显示一个项目列表,以及它们是否被选中。在数据库中,该值是布尔值。但在GridView中,列显示为true或false。如何将其更改为复选框而不是true/false <asp:BoundField DataField="Checked" HeaderText="Checked"></asp:BoundField> 我发现了DataGrid的一个例子: int count = 1; foreach (TableCell

我有一个gridview,它显示一个项目列表,以及它们是否被选中。在数据库中,该值是布尔值。但在GridView中,列显示为true或false。如何将其更改为复选框而不是true/false

<asp:BoundField DataField="Checked" HeaderText="Checked"></asp:BoundField>
我发现了DataGrid的一个例子:

int count = 1;
            foreach (TableCell c in e.Item.Cells)
            {
                bool b = Convert.ToBoolean(((DataRowView)e.Item.DataItem).Row["IsActive"]);

                if (count == e.Item.Cells.Count)
                {
                    c.Text = "<input type=\"checkbox\" " + ((b) ? "checked" : "") + "/>";
                }
                count++;
            }
int count=1;
foreach(e.Item.Cells中的表格单元格c)
{
bool b=Convert.ToBoolean(((DataRowView)e.Item.DataItem).Row[“IsActive”]);
if(count==e.Item.Cells.count)
{
c、 Text=“”;
}
计数++;
}
但由于我使用的是gridview,我尝试将代码更改为:

int count = 1;
            foreach (TableCell c in e.Row.Cells)
            {
                bool b = Convert.ToBoolean(((GridViewRow)e.Row.DataItem).Row["Checked"]); //error

                if (count == e.Row.Cells.Count)
                {
                    c.Text = "<input type=\"checkbox\" " + ((b) ? "checked" : "") + "/>";
                }
                count++;
            }
int count=1;
foreach(e.Row.Cells中的表格单元格c)
{
bool b=Convert.ToBoolean(((GridViewRow)e.Row.DataItem).Row[“Checked”]);//错误
if(count==e.Row.Cells.count)
{
c、 Text=“”;
}
计数++;
}
但我得到了一个错误:

“System.Web.UI.WebControl.GridViewRow”不包含定义 对于“Row”和不接受第一个参数的扩展方法“Row” 可以找到“System.Web.UI.WebControls.GridViewRow”类型(是否为 缺少使用指令或程序集引用?)


创建模板字段。大致如下:

<asp:TemplateField HeaderText="Checked">
  <ItemTemplate>
    <asp:CheckBox ID="cbCheckBox" runat="server" checked='<%# ((bool)Eval("Checked")) %>'/>
  </ItemTemplate>
</asp:TemplateField>


编辑:如果需要转换,请尝试显式添加(bool),如上所述。如果失败,那么
Convert.ToBoolean(Eval(“Checked”)
应该可以工作,或者您可以使用
。。。不过,我倾向于选择模板。

这是因为您正在执行((GridViewRow)e.Row.DataItem)。Row--GridViewRow已经是GridView的一行,而GridViewRow.Rows不存在……不过,我有点不明白为什么要转换为布尔值。你说数据库已经包含了一个布尔值。如果这是真的,那么您应该能够简单地将其插入。
<asp:TemplateField HeaderText="Checked">
  <ItemTemplate>
    <asp:CheckBox ID="cbCheckBox" runat="server" checked='<%# ((bool)Eval("Checked")) %>'/>
  </ItemTemplate>
</asp:TemplateField>