In one of ASP.NET pages I've used CheckBox column inside Datagrid, and on some condition the column containing checkbox was invisible
TemplateColumn.Visible=false
On postback my code tried to read if control is checked, and it always returned chk.Checked=false.
It seems that it is done by design and invisible CheckBox does not have ViewState["Checked"].
As it suggested in the link Invisible column won't be rendered to the client.(http://www.velocityreviews.com/forums/t93577)-aspnet-datagrid-template-column-when-inivisible.html):
Make the column invisible with css rule display:none.