我有一个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指令或程序集引用?)
答案 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" />
...我倾向于更喜欢模板。