将Gridview中的列转换为复选框

时间:2016-02-02 16:02:06

标签: c# asp.net gridview checkbox

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

sorted_ls

代码背后:

<asp:BoundField DataField="Checked" HeaderText="Checked"></asp:BoundField>

我为DataGrid找到了一个例子:

 protected void gvCVRTDetails_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            lookupCVRT work = (lookupCVRT)e.Row.DataItem;
            GridView gv = sender as GridView;

            e.Row.Attributes.Add("ID", "gvCVRTDetails_" + work.ID);
            e.Row.Cells[0].Attributes.Add("onclick", "event.stopPropagation();");

            HtmlGenericControl lnkShowHide = (HtmlGenericControl)e.Row.FindControl("lnkShowHide");
            HyperLink ChecklistItem = (HyperLink)e.Row.FindControl("ID");


        }
    }  

但是由于我使用的是gridview,我尝试将代码更改为:

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++;
            }

但我收到错误:

  

&#39; System.Web.UI.WebControls.GridViewRow&#39;不包含定义   为了&#39; Row&#39;没有扩展方法&#39; Row&#39;接受第一个论点   键入&#39; System.Web.UI.WebControls.GridViewRow&#39;可以找到(是你   缺少using指令或程序集引用?)

1 个答案:

答案 0 :(得分:2)

创建模板字段。有点像:

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

编辑:如果您需要转换,请尝试显式添加(bool),如上所述。如果失败,那么Convert.ToBoolean(Eval("Checked"))应该可以使用,或者您可以使用<asp:CheckBoxField DataField="Checked" /> ...我倾向于更喜欢模板。