Please check below code, I've tested it.
ASPX CODE:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="Title" HeaderText="Title" />
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chk" runat="server" Checked='<%#Eval("CheckValue") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnGetCheck" runat="server" Text="Get Check" OnClick="btnGetCheck_Click" />
ASPX.CS CODE:
class CheckExample
{
public string Title { get; set; }
public bool CheckValue { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<CheckExample> list = new List<CheckExample>();
list.Add(new CheckExample() { Title = "A", CheckValue = false });
list.Add(new CheckExample() { Title = "B", CheckValue = false });
list.Add(new CheckExample() { Title = "C", CheckValue = false });
list.Add(new CheckExample() { Title = "D", CheckValue = false });
list.Add(new CheckExample() { Title = "E", CheckValue = false });
GridView1.DataSource = list;
GridView1.DataBind();
}
}
protected void btnGetCheck_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
bool chkValue = ((CheckBox)row.FindControl("chk")).Checked;
}
}