我在 ASP.NET 中有一个 GridView,它带有一个 CheckBoxField 列,该列绑定到数据库中查询的 DataField。如果值为假,我需要能够检查它,如果值为真,则不检查。
这有点不标准,因为它完全倒退了大多数复选框控件的工作方式,但是有没有办法做到这一点?
对此有多种方法。你可以试试这个:
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>