Существует несколько подходов к этому. Вы можете попробовать:
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;
}
}
}
}
Не забудьте добавить правильную ячейку, где находится ваше поле checkboxfield.
Еще бы добавить 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);
Extra JQuery версия:
<script>
$(function() {
$("#<%=GridView1.ClientID %> input[type='checkbox']").each(function() {
$(this).prop("checked", !$(this).prop("checked"));
});
});
</script>
Сначала один работал как шарм! Огромное спасибо –