- PR -

データテーブルのデータ保持について

1
投稿者投稿内容
初心者
常連さん
会議室デビュー日: 2006/11/24
投稿数: 29
投稿日時: 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件しかデータテーブルに追加されず
以前のデータがなくなっています。
これは、ポストバックすることによってデータソースのデータが消えてしまっているのでしょうか?うまく複数件追加するにはどうしたらいいのでしょうか。

長々とすみませんが、ご教授宜しくお願い致します。

まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2006-11-29 18:01
・Session 変数か ViewState にデータセットを保存しませう。
・Web Application のアーキテクチャについて学習しませう。
初心者
常連さん
会議室デビュー日: 2006/11/24
投稿数: 29
投稿日時: 2006-11-29 18:26
お返事ありがとうございます。
最終手段は Session 変数しかないかと思っていましたが、
データが多いと大変かなと思い、ベテランの方なら他に方法を知ってるかと思い
質問させていただいた次第です。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2006-11-30 00:10
データが多いときは、SQLあるいはSQLを構築するために必要な情報だけ
SessionやViewStateにしまっといて、都度DBから取得します。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-30 00:14
データが多いときは、保持しなければならないデータを少なくする努力をします。
ぼのぼのさんのも一案。
ページングしたり、絞り込み条件を設けたり。
_________________
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-11-30 00:42
引用:

最終手段は Session 変数しかないかと思っていましたが、
データが多いと大変かなと思い、ベテランの方なら他に方法を知ってるかと思い
質問させていただいた次第です。


引用:

Dim DataSet1Instance As New DataSet1()
Dim TEST As DataTable
Dim myDataRow As DataRow


最終手段も何も、ここで毎回インスタンス作っているのでもちろん消えます。
Web アプリケーションはリクエストされる度に毎回「別もの」になっていて状態を保持していません。
まるくさんが仰っているのはそういう事で、状態を保持したければセッション変数を使いなさいよという事です。
_________________
囚人のジレンマな日々
初心者
常連さん
会議室デビュー日: 2006/11/24
投稿数: 29
投稿日時: 2006-11-30 08:46
ぼのぼのさん、Jittaさん、囚人さん ありがとうございます。
今回、Windowsアプリで作成していた画面をweb化することになったのですが、
やはりWindowsアプリでできることを同じように期待してはだめですね。
なんとか対策したいと思います。
1

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