- PR -

ASP GridViewからデータ編集 + 取得

1
投稿者投稿内容
にゃんた
会議室デビュー日: 2007/01/11
投稿数: 3
投稿日時: 2007-01-30 12:10
標記件の質問なのですが、
今回問題になっている箇所は

○GridViewに表示した内容を編集し、その値をDataSet or DataTableに格納する
その後、一気に更新などを行いたいと考えています。

ということです。
実際に行っている処理といたしましては、


表示ボタンを押下でストアドを接続し、
DataAdapterを使用して
DataTableにDBから取得した内容をいれています。
そのDataTableをGridViwe.DataSourceにいれ、Bindして画面に表示してます。

また画面上のGridViewはテンプレート機能を使用し、
表示した時からテキストボックスにして、編集可能状態です。
GridViewに表示するまではうまくいってます。

その後、更新ボタンなどを押すと、編集されて表示されているGridViewの内容を取得したいのですが、
@GridView.DataSourceの中身がNothingになってます。
Aまた、調べておりますと過去こちらの掲示板に
編集したデータに対しては全行UpdateRowを行わないと更新されたデータが取得できないとありました。
その際の処理についての考えといたしましては、、、

'全行 UpdateRow
Dim Row As Integer = GridView1.Rows.Count
For i As Integer = 0 To Row - 1
GridView1.UpdateRow(i, True)
Next

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
End Sub

で宜しいのでしょうか?RowUpdatingイベントは何もプログラム書かなくてよい??

また問題@のソースを下記に載せます

'表示処理
Protected Sub SetButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SetButton.Click
'Oracle接続
OraCon = New OracleConnection("Data Source="& ";User Id="& ";password=" & ";pooling=false")
OraCon.Open()
OraCmd = New OracleCommand("", OraCon)

'ストアド接続
OraCmd.CommandType = Data.CommandType.StoredProcedure
OraCmd.CommandText = "xxxxxx"

Dim OraDat As New OracleDataAdapter(OraCmd)
Dim ds As New System.Data.DataSet
Dim dt As New System.Data.DataTable("test")

OraDat.Fill(dt)
ds.Tables.Add(dt)

GridView1.DataSource = ds.Tables("test")

'データバインド
GridView1.DataBind()
End Sub

'更新処理
Protected Sub KoushinButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles KoushinButton.Click

Dim ds As New System.Data.DataSet
Dim dt As New System.Data.DataTable

ds.Tables.Add(dt)
dt = GridView1.DataSource ←この時点でGridView1.DataSourceはNothingとなっている

End Sub

全然わからないで、予測ですが・・・
GridView1.DataSourceがNothingになっているのは、
ボタンクリック時に毎回インスタンス作っているからNothingになっているのでしょうか?
もしそうであれば回避する方法はありますか?

以上、わかりにくいかもしれませんが、是非よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-08 21:42
引用:

にゃんたさんの書き込み (2007-01-30 12:10) より:

全然わからないで、予測ですが・・・
GridView1.DataSourceがNothingになっているのは、
ボタンクリック時に毎回インスタンス作っているからNothingになっているのでしょうか?
もしそうであれば回避する方法はありますか?


 はい、クライアントに送信した時点で破棄され、クライアントからリクエストがあった時点で再生成されるからです。

 ViewState に放り込むなり、Session に放り込むなり、もう一度取得し直すなり。。。
それぞれ一長一短ありますので、どういう短所を持っていて、自分の今の問題にどれが一番適合しそうか考えて、選択してください。
_________________
1

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