title: Checkbox on GridView always returning False
body: <p>I have a <code>GridView</code> with a Checkbox on the first column:</p>
  
  <pre><code>&lt;asp:GridView ID="dgNumeradores" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="ItemID"&gt;
      &lt;Columns&gt;
          &lt;asp:TemplateField HeaderText="Seleccionar"&gt;
              &lt;ItemTemplate&gt;
                  &lt;asp:CheckBox runat="server" ID="chkChecked" /&gt;
              &lt;/ItemTemplate&gt;
          &lt;/asp:TemplateField&gt;
          &lt;asp:BoundField HeaderText="Item" DataField="Description"&gt;
          &lt;/asp:BoundField&gt;
          &lt;asp:BoundField HeaderText="Plantilla" DataField="Template"&gt;
          &lt;/asp:BoundField&gt;
      &lt;/Columns&gt;
  &lt;/asp:GridView&gt;
  </code></pre>
  
  <p>Now in the code behind I try to update the <em>Checked</em> column on the DataTable acting as datasource for the GridView (since, as you can see above, the Checkbox column is not bound to the datasource for reasons you probably know.):</p>
  
  <pre><code>Protected Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
      Try
          For Each dr As GridViewRow In Me.dgNumeradores.Rows
              Me.itemsNumTable.Select("ItemID = '" &amp; dgNumeradores.DataKeys(dr.RowIndex).Value &amp; "'")(0)("Checked") = DirectCast(dr.Cells(0).FindControl("chkChecked"), CheckBox).Checked
          Next
          'Some more unimportant-for-this-question code
      Catch ex As Exception
          tableInfo.ShowError(ex.Message)
      End Try
  End Sub
  </code></pre>
  
  <p>The thing is that the <code>Checkbox.Checked</code> always returns <code>False</code>.</p>
  
  <p>How can I get the checked state of the Checkboxes in this scenario? Or what would be the best approach into updating the aforementioned column?</p>
  
  <p>P.S. Note that click on the checkboxes doesn't post back. Nothing happens on the page until the user clicks <code>Save</code> (and that is the intended behavior).</p>