- - PR -
データテーブルのデータ保持について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-29 16:56
いつも参考にさせていただいております。
開発環境は ASP.NET 2.0 /VisualStudio2005(VB) /Oracle.DataAccess となります。 ●したいこと @TextBox1、TextBox2を用意し、そこにテーブルに追加したいデータを 入力できるようにします。 A新規ボタンを作成し、ボタンがクリックされたら、GridViewに入力された TextBox1、TextBox2の値を反映 ※ただし、データベースに更新するのではなく、データセットに登録し GridViewに表示させる。 B何回かデータを新規追加し、GridViewに複数件表示 C最後に登録ボタンで、一気にデータベースに更新 ●試したこと ・データセットクラス(DataSet1)を作成し、データを入れるためのデータテーブル(TEST)を作成。 ・入力されたデータをデータテーブルに追加。GridViewにBindしてデータ表示。 以下、作成したコードです。 Protected Sub btnIns_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim DataSet1Instance As New DataSet1() Dim TEST As DataTable Dim myDataRow As DataRow dtbl_TEST = DataSet1Instance.Tables("TEST") myDataRow = dtbl_TEST.NewRow myDataRow.Item(0) = TextBox1.Text myDataRow.Item(1) = TextBox2.Text dtbl_TEST.Rows.Add(myDataRow) grid1.DataSource = DataSet1Instance grid1.DataBind() End Sub @〜Aはうまくいき、入力したデータがGridViewに反映されました。 ●問題点 Bのもう一度、違うデータをTextBox1、TextBox2に入力し、新規ボタンを押すと、 そのデータ1件のみGridViewに表示され、一回目に追加したデータがなくなっている。 何回追加しても、最後の1件しかデータテーブルに追加されず 以前のデータがなくなっています。 これは、ポストバックすることによってデータソースのデータが消えてしまっているのでしょうか?うまく複数件追加するにはどうしたらいいのでしょうか。 長々とすみませんが、ご教授宜しくお願い致します。 | ||||||||
|
投稿日時: 2006-11-29 18:01
・Session 変数か ViewState にデータセットを保存しませう。
・Web Application のアーキテクチャについて学習しませう。 | ||||||||
|
投稿日時: 2006-11-29 18:26
お返事ありがとうございます。
最終手段は Session 変数しかないかと思っていましたが、 データが多いと大変かなと思い、ベテランの方なら他に方法を知ってるかと思い 質問させていただいた次第です。 | ||||||||
|
投稿日時: 2006-11-30 00:10
データが多いときは、SQLあるいはSQLを構築するために必要な情報だけ
SessionやViewStateにしまっといて、都度DBから取得します。 | ||||||||
|
投稿日時: 2006-11-30 00:14
データが多いときは、保持しなければならないデータを少なくする努力をします。
ぼのぼのさんのも一案。 ページングしたり、絞り込み条件を設けたり。 _________________ | ||||||||
|
投稿日時: 2006-11-30 00:42
最終手段も何も、ここで毎回インスタンス作っているのでもちろん消えます。 Web アプリケーションはリクエストされる度に毎回「別もの」になっていて状態を保持していません。 まるくさんが仰っているのはそういう事で、状態を保持したければセッション変数を使いなさいよという事です。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-11-30 08:46
ぼのぼのさん、Jittaさん、囚人さん ありがとうございます。
今回、Windowsアプリで作成していた画面をweb化することになったのですが、 やはりWindowsアプリでできることを同じように期待してはだめですね。 なんとか対策したいと思います。 |
1