2013-03-28 98 views
3

我在ASP.NET中有一个GridView,并且CheckBoxField列从数据库中的查询绑定到DataField。我需要能够检查它的值是否为false,如果值为true,则可以取消选中。为Checked CheckBoxField设置默认布尔值

这有点不标准,因为它完全落后于大多数复选框控件的工作方式,但有没有办法做到这一点?

回答

2

有多种方法。你可以试试这个:

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> 
+1

第一个工作就像一个魅力!谢谢一堆 –