3
我在ASP.NET中有一个GridView,并且CheckBoxField列从数据库中的查询绑定到DataField。我需要能够检查它的值是否为false,如果值为true,则可以取消选中。为Checked CheckBoxField设置默认布尔值
这有点不标准,因为它完全落后于大多数复选框控件的工作方式,但有没有办法做到这一点?
我在ASP.NET中有一个GridView,并且CheckBoxField列从数据库中的查询绑定到DataField。我需要能够检查它的值是否为false,如果值为true,则可以取消选中。为Checked CheckBoxField设置默认布尔值
这有点不标准,因为它完全落后于大多数复选框控件的工作方式,但有没有办法做到这一点?
有多种方法。你可以试试这个:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (Control ctrl in e.Row.Cells[0].Controls)
{
if (ctrl.GetType().Name == "CheckBox")
{
CheckBox chk = (CheckBox)ctrl;
chk.Checked = !chk.Checked;
}
}
}
}
记得在你的复选框的位置添加正确的单元格。
另一种是添加一个TemplateField:
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server"
Checked='<%# !Convert.ToBoolean(Eval("Status")) %>' />
</ItemTemplate>
</asp:TemplateField>
你也可以修改您的数据源后,它是从数据库服务器获取的,因此你不需要,如果你使用它来修改你的查询在其他地方的正常方式。假设你有你的项目的Generic List
:
myItems.ForEach(item => item.Status = !item.Status);
额外的jQuery版本:
<script>
$(function() {
$("#<%=GridView1.ClientID %> input[type='checkbox']").each(function() {
$(this).prop("checked", !$(this).prop("checked"));
});
});
</script>
第一个工作就像一个魅力!谢谢一堆 –