- - PR -
ASP GridViewからデータ編集 + 取得
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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になっているのでしょうか? もしそうであれば回避する方法はありますか? 以上、わかりにくいかもしれませんが、是非よろしくお願いいたします。 | ||||
|
投稿日時: 2007-02-08 21:42
はい、クライアントに送信した時点で破棄され、クライアントからリクエストがあった時点で再生成されるからです。 ViewState に放り込むなり、Session に放り込むなり、もう一度取得し直すなり。。。 それぞれ一長一短ありますので、どういう短所を持っていて、自分の今の問題にどれが一番適合しそうか考えて、選択してください。 _________________ |
1