投稿者 るきお  (社会人) 投稿日時 2020/2/25 23:09:33
しかとは確認していませんが、Request.Form.AllKeysに値が設定されるかどうかはブラウザーが値を送信するかどうかなので、チェックしていないチェックボックスはそもそも値を送信してくれないのかもしれません。
これは間違っているかもしれませんが、どちらにしてもRequest.Form.AllKeysを使って通常のロジックを書くことはよろしくなく、テキストボックスやチェックボックスの値を取得するにはTextプロパティやCheckプロパティを使用するべきです。

GridViewのFooterRowプロパティでFindControlすると、フッターに配置してあるコントロールに直接アクセスできます。
※フッターに限らずGridView内に配置されたコントロールにプログラムからアクセスするにはこのような階層構造を利用します。
下記サンプルは値の取得までですが、ここまでできれば更新処理は別問題ですよね。

VB
Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GridView1.RowCommand

        If e.CommandName = "AddNew" Then
            Dim xId As String = DirectCast(GridView1.FooterRow.FindControl("txtFooterXID"), TextBox).Text
            Dim xName As String = DirectCast(GridView1.FooterRow.FindControl("txtFooterXName"), TextBox).Text
            Dim xBit As Boolean = DirectCast(GridView1.FooterRow.FindControl("txtFooterXBit"), CheckBox).Checked

            MsgBox(String.Format("xId={0}, xName={1}, xBit={2}", xId, xName, xBit))
        End If

    End Sub
End Class

Public Class DataBaseReader

    Public Function OpenData() As DataTable
        Dim table As New DataTable
        table.Columns.Add("XID"GetType(Integer))
        table.Columns.Add("XName"GetType(String))
        table.Columns.Add("XBit"GetType(Boolean))

        table.Rows.Add(1, "徳川家康"True)
        table.Rows.Add(2, "織田信長"False)
        table.Rows.Add(3, "豊臣秀吉"False)

        Return table
    End Function
End Class


長くなるので回答を分割します。