投稿者 ASP.NET初心者  (社会人) 投稿日時 2020/2/25 10:24:07
お世話になります。初めて投稿させて頂きます。
GridViewへSQLServerデータをバウンドし修正、削除といった動きは実現出来ています。
新規に最下行よりレコードを追加する機能を組み込みたいので、テンプレートにてフッターを用意し
テキストボックスやチェックボックスを配置しました。
フッター上のボタンをクリックした時に
For Each key As String In Request.Form.AllKeys
    If key.Contains("フッター上のテキストボックス") Then
        SqlDataSource.InsertParameters.Add(New ControlParameter("DB項目", TypeCode.Int32, key, "Text"))
    End If
    If key.Contains("フッター上のチェックボックス") Then
        SqlDataSource.InsertParameters.Add(New ControlParameter("DB項目", TypeCode.Boolean, key, "Checked"))
    End If

以下、画面項目数分列挙

Next
SqlDataSource.Insert()
といったコーディングをしました。
全ての項目を入力し、チェックボックスもOnにした場合はレコードが追加されます。
テキストボックスを未入力にした場合も値=Nullで追加されます。
しかし、チェックボックス未選択の状態では先のkey.Containsにチェックボックスのキーが取得出来ずInsertが異常終了します(メッセージ=スカラー変数"@DB項目名"を宣言してください)
何か根本的な作法が間違っているのでしょうか?よろしくお願いします。
DB側の問題ではないと思っておりますが、DB上のチェックボックス項目はBit、Nullを許可しております。