我在 ASP.NET 中有一个 GridView,它有一个 CheckBoxField 列,该列从数据库中的查询绑定(bind)到 DataField。如果值为 false,我需要能够检查它,如果值为 true,则不检查。
这有点不标准,因为它完全倒退了大多数复选框控件的工作方式,但有没有办法做到这一点?
最佳答案
有多种方法可以解决这个问题。你可以试试这个:
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>
您还可以在从数据库服务器获取数据源后对其进行修改,因此如果您在其他地方以正常方式使用它,则无需修改查询。假设您有一个项目的通用列表
:
myItems.ForEach(item => item.Status = !item.Status);
额外的 jQuery 版本:
<script>
$(function () {
$("#<%=GridView1.ClientID %> input[type='checkbox']").each(function () {
$(this).prop("checked", !$(this).prop("checked"));
});
});
</script>
关于asp.net - 为选中的 CheckBoxField 设置默认 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15688593/