DOBON.NET DOBON.NETプログラミング掲示板過去ログ

asp画面からGridViewに追加し、GridViewから行削除

環境/言語:[ASP.NET 2.0 、VisualStudio2005(VB)、SqlServer2008.DataAccess ]
分類:[ASP.NET]

2010/11/27(Sat) 17:10:45 編集(投稿者)
2010/11/27(Sat) 17:10:41 編集(投稿者)

いつも参考にさせていただいております。
GridView 行削除とかで検索しているのですが、
解決に結びつかずご教示頂きたく、よろしくお願いします。

開発環境
ASP.NET 2.0
VisualStudio2005(VB)
SqlServer2008.DataAccess

お聞きしたいこと。
ASP.NETでGridViewにasp画面からデータ追加し、
追加したデータをGridView内に配置した削除ボタンをクリックし、
クリックされた行を削除したいのですが、うまくいきません。

もし、みなさんもこのような処理のプログラムを作られていると思いますが
参考になるサイトとか考え方などがありましたらご紹介下さい。

初心者で、初歩的な質問ですいません。

宜しくお願いします。

下記は、画面からGridViewにAddするコードと画面イメージなります。

Protected Sub addRowBtn_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles addRowBtn.Click

Dim dt As DataTable
Dim dr As DataRow

'セッション情報からDataTableを取得
dt = Session("DataTable")

'DataTableに追加
dr = dt.NewRow()
dr(0) = Me.idTxt.Text
dr(1) = Me.nameTxt.Text
dt.Rows.Add(dr)

'セッションに再格納
Session("DataTable") = dt

'GridViewにDataTableをバインド
Me.GridView.DataSource = dt
Me.GridView.DataBind()

End Sub

ASP画面イメージ
1)入力テキストエリア
ID:|入力テキストエリア| Name:|入力テキストエリア| 追加ボタン |

2)GridViewイメージ
 追加ボタン(ID="addRowBtn")をクリックしGridViewに入力情報を追加
| ID     | Name    |     |
|1234567890123|XXXXXXXXXX名称|削除ボタン|
|1234567890ASD|XXXXXXXXXX名称|削除ボタン|
|1234567890QWE|XXXXXXXXXX名称|削除ボタン|
■No27674 に返信(はちまきさんの記事)

> ASP.NETでGridViewにasp画面からデータ追加し、
> 追加したデータをGridView内に配置した削除ボタンをクリックし、
> クリックされた行を削除したいのですが、うまくいきません。

処理は大きく2つですよね。
GridView にデータを追加
GridView からデータを削除

ご掲示いただいた、データを追加するコードを見る限りでは問題ないように思いますが、
データを削除するところがうまくいかないのでしょうか?
例外は何か発生しますか?

> もし、みなさんもこのような処理のプログラムを作られていると思いますが
> 参考になるサイトとか考え方などがありましたらご紹介下さい。

Session で DataTable を永続化するとサーバーのメモリーを圧迫するので
データベースを使用するか、十分にデータが少ない場合は ViewState で永続化することが
多いです。私は。

データベースを使用すれば SqlDataSource コントロールを使用してコードをほとんど記述せず
に実装できます。
もりおさん、返信有難う御座います。
削除処理のコーディングに行き詰ってしまいご教示頂き書き込みを致しました。
考え方の視野を広げようと調査しているのですが、
明るい兆しが見えてきません。

■No27677に返信(もりおさんの記事)
>
> ■No27674 に返信(はちまきさんの記事)
>
>>ASP.NETでGridViewにasp画面からデータ追加し、
>>追加したデータをGridView内に配置した削除ボタンをクリックし、
>>クリックされた行を削除したいのですが、うまくいきません。
>
> 処理は大きく2つですよね。
> GridView にデータを追加
> GridView からデータを削除

→はい、2つになります。
 Addのコーディングはうまくいっているのですが、
 ASP画面からAddした情報をASP画面に設置したGridViewの削除ボタンからの
 コーディングに悩んでおります。
 (SQLから取得しGridViewに連携させて表示していません。)
 サンプルとなるコーディングなど御座いますでしょうか。
 
>
> ご掲示いただいた、データを追加するコードを見る限りでは問題ないように思いますが、
> データを削除するところがうまくいかないのでしょうか?
> 例外は何か発生しますか?

→GridViewに配置した削除ボタンがクリックされた
 ・RowIndexを取得する
 ・行削除する
 
 いろいろ調べたりしているのですが、上記の処理流れがうまく出来ません。
 GridViewを扱う際の基本的な所や考え方が間違っているのかもしれません。


>>もし、みなさんもこのような処理のプログラムを作られていると思いますが
>>参考になるサイトとか考え方などがありましたらご紹介下さい。
>
> Session で DataTable を永続化するとサーバーのメモリーを圧迫するので
> データベースを使用するか、十分にデータが少ない場合は ViewState で永続化することが
> 多いです。私は。
>
> データベースを使用すれば SqlDataSource コントロールを使用してコードをほとんど記述せず
> に実装できます。

→今回、実装したい流れなのですが、画面からの入力情報をTBLに登録する。
 といったメンテナンス画面のような感じになります。
 少数項目で画面操作人数も限られていることから一時的にSessionで保持し、
 GridViewへ一覧表示する。
 GridViewでデータを操作(削除)出来ればと考えました。
 
 以上になります。ご教示の程、宜しくお願い致します。
2010/11/30(Tue) 08:59:11 編集(投稿者)

■No27683 に返信(はちまきさんの記事)

> →GridView に配置した削除ボタンがクリックされた

GridView.RowDeleting イベントが適当かと思います。

> ・RowIndexを取得する

GridView.RowDeleting イベント発生時、引数として GridViewDeleteEventArgs が
ハンドラーに渡されます。
GridViewDeleteEventArgs.RowIndex プロパティで取得することができます。

> ・行削除する

DataTable から行を削除して GridView にバインドするとよいかと思います。

> いろいろ調べたりしているのですが、上記の処理流れがうまく出来ません。
> GridView を扱う際の基本的な所や考え方が間違っているのかもしれません。

うまくないものはできているのでしょうか。
どこまでできているのかお教えいただけると答えやすいです。

> サンプルとなるコーディングなど御座いますでしょうか。

GridView.RowDeleting イベント
GridViewDeleteEventArgs.RowIndex プロパティ
DataTable から行を削除

それぞれ個別に探せばあると思います。
すべての条件に合致するサンプルを見つけるのは難しいと思います。
はちまきです。
> GridView.RowDeleting イベント
> GridViewDeleteEventArgs.RowIndex プロパティ
> DataTable から行を削除
上記を参考にして、無事にイメージしている処理ができました。

有難う御座います。

■No27685に返信(もりおさんの記事)
> 2010/11/30(Tue) 08:59:11 編集(投稿者)
>
> ■No27683 に返信(はちまきさんの記事)
>
>>→GridView に配置した削除ボタンがクリックされた
>
> GridView.RowDeleting イベントが適当かと思います。
>
>>・RowIndexを取得する
>
> GridView.RowDeleting イベント発生時、引数として GridViewDeleteEventArgs が
> ハンドラーに渡されます。
> GridViewDeleteEventArgs.RowIndex プロパティで取得することができます。
>
>>・行削除する
>
> DataTable から行を削除して GridView にバインドするとよいかと思います。
>
>>いろいろ調べたりしているのですが、上記の処理流れがうまく出来ません。
>>GridView を扱う際の基本的な所や考え方が間違っているのかもしれません。
>
> うまくないものはできているのでしょうか。
> どこまでできているのかお教えいただけると答えやすいです。
>
>>サンプルとなるコーディングなど御座いますでしょうか。
>
> GridView.RowDeleting イベント
> GridViewDeleteEventArgs.RowIndex プロパティ
> DataTable から行を削除
>
> それぞれ個別に探せばあると思います。
> すべての条件に合致するサンプルを見つけるのは難しいと思います。
>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板