- PR -

GridViewで削除パラメータの渡し方を教えて下さい。

投稿者投稿内容
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-05-24 14:40
VS2005c#とSqlServer2005で開発をしている未熟者といいます。
社員テーブル(comid,empid,emoname,szkcd)をGridviewで表示していて
(元になるSqlDataSourceの削除クエリにてcomidとempidにパラメータ設定をしていま))
削除ボタンをクリックされたらGridView1_RowDeletingイベントでパラメータ設定
してレコード削除したいのですが、実行すると”スカラ変数"@comid"を宣言して
ください。”というエラーになってしまいます。
わかりずらい説明で申し訳ありませんが、ご教授の方お願いします。


コーディングは以下です。
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int w_idx;
w_idx = e.RowIndex;
GridViewRow selectrow = GridView1.Rows[w_idx];
SqlDataSource1.DeleteParameters["comid"].DefaultValue =                  selectrow.Cells[1].Text;
SqlDataSource1.DeleteParameters["empid"].DefaultValue =            selectrow.Cells[2].Text;
}
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-05-24 15:21
パラメータの指定で"comid"じゃなくて"@comid"とするんじゃなかったかな。
ただ、私が前に試してたときだとDefaultValueに一度値を入れてしまうと
次に変更しようとしてもできなかった記憶があります。
まずはパラメータの指定だけ変えてみて、それでうまくいかないようなら
削除に必要なパラメータを一度消して、新たに追加する形でデータを
与えないといけないかもしれません。

#データを設定するようなプログラム書かなくてもできそうな気もするけど
 なんか方法ないのかな。
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-05-24 15:50
どっとねっとふぁんさん ご指導ありがとうございます。
早速、削除クエリーのパラメータとプログラム側を@付きにしてみましたが
同じ結果になってしまい。どっとねっとふぁんさんの言われる一度、パラメータ
を削除して〜の方法を試そうと思いますが、恥ずかしい話ですが
どうコーディングするのかわかりません。
一応、コンパイルエラーになりましたが以下の様な感じですか?
宜しくお願いします。
SqlDataSource1.DeleteParameters.Remove("@comid");
SqlDataSource1.DeleteParameters.Add("@comid", "");
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-05-24 16:09
ああ、きちんと確認しないとだめだな。
そもそも@をつけると例外がおきますね。
でも同じ結果はおかしいですし、エラーの状況も異なるようです。
こうなると、SqlDataSourceのほうがどのような記述になっているのかが
先に気になりますね。
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-05-24 16:40
どっとねっとふぁんさん 早速のお返事ありがとうございます。
SqlDataSourceのDelete SQLステートメントは以下です。

DELETE FROM MinasiZAN WHERE (comid = @comid) and (empid = @empid)

ちなみに、クエリビルダのクエリ実行の実行でパラメータを入力して実行すると
削除されました。

どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-05-24 16:45
DeleteParametersのタグの部分はどうなってます?
comidとempidに対応した2つのパラメータの定義が記述されてますか?
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-05-24 17:22
どっとねっとふぁんさん ありがとうございます。
DeleteParametersのタグの部分は次のようになっています。

htmlソースの
<DeleteParameters>
  <asp:Parameter Name="comid" />
    <asp:Parameter Name="empid" />
</DeleteParameters>
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-05-24 18:02
うーん、なぜ最初に提示されているようなエラーがでるのかがわかりませんね。
ちなみに一番最初の状態で、パラメータに固定の文字列("1"とか"2"とか)を
渡してもエラーでますか?

#似たようなこと手元で試してみてもエラーは表示されない。。。

スキルアップ/キャリアアップ(JOB@IT)