- PR -

TextBox の内容を反映

1
投稿者投稿内容
Rikuro
会議室デビュー日: 2003/09/04
投稿数: 12
投稿日時: 2003-09-19 11:59
こんにちは。

件名についてお聞きします。
行いたいことは以下のとおりです。

1. DBから1レコード取得し、各項目をTextBoxに表示する。
2. TextBoxの内容に変更を加え、ボタン押下でDBの更新を行う。

上記 2. のとき、ブラウザ表示上は変更した内容が表示されていますが、コードでは変更前の値が使用されています。
変更した値を使用するにはどうしたらよいでしょうか?
ご存知の方がいらっしゃいましたら、ご教授ください。

コード、環境は以下のとおりです。

1) コード

1. Imports System.Data.OleDb
2.
3. Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
4. Dim rs As OleDbDataReader
5. OleDbConnection1.Open()
6. rs = OleDbDataAdapter1.SelectCommand.ExecuteReader()
7.
8. rs.Read()
9.
10. TextBox1.Text = rs("Client")
11. TextBox2.Text = rs("ClientOffice")
12. TextBox3.Text = rs("Project")
13.
14. rs.Close()
15. OleDbConnection1.Close()
16. End Sub
17.
18. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
19. Dim DbCommand As OleDbCommand
20. Dim strSQL As String
21.
22. strSQL = "Update T_EIGYOU Set Client='" & TextBox1.Text & "',ClientOffice='" & TextBox2.Text & "',Project='" & TextBox3.Text & "' Where ID=1"
23. DbCommand = New OleDbCommand(strSQL, OleDbConnection1)
24. DbCommand.Connection.Open()
25. DbCommand.ExecuteNonQuery()
26. OleDbConnection1.Close()
27. End Sub

2) 環境

OS:Windows2000 Pro
Microsoft .NET Framework 1.0
Microsoft Visual Basic .NET
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-09-19 12:22
こんにちは。

結果から言いますと、
5行目の前に
If Not Page.IsPostBack Then
15行目の後に
End If
を追加してやればお望みどおりの結果になります。

ボタンをクリックした時にPostBackが発生しますので、
「Button1_Click」の前に「Page_Load」が走ります。
で、10〜12行目で前の値を取ってしまっていますよね?

VSをお使いでしたら、
3行目にブレークポイントを付けてデバックしてみてください。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-09-19 12:36
Rikuroさん、こんにちは。

引用:

3. Private Sub Page_Load(ByVal sender As System.Object, ByVal e As



ここ↑にブレークポイントを設定して、デバッグ実行してみて下さい。
ボタンのクリック時にも、このイベントが発生しているのが判ると思います。

ポストバック時に値が初期化されないようにするには、IsPostBackプロパティの値を確認すればOKでしょう。
詳細ついては、「Visual Basic および Visual C# の概念」-「Web フォーム ページの処理」あたりをMSDNライブラリで調べてみて下さい。

【追記】
...って、まゆりんさんが先に同じ事書いてますね。


[ メッセージ編集済み 編集者: きくちゃん 編集日時 2003-09-19 12:37 ]
Rikuro
会議室デビュー日: 2003/09/04
投稿数: 12
投稿日時: 2003-09-19 13:10
まゆみ 様、きくちゃん 様、ありがとうございます。

無事解決しました。

引用: -------------------------------------------------------------------------

    5行目の前に
    If Not Page.IsPostBack Then
    15行目の後に
    End If

--------------------------------------------------------------------------------

ボタンのクリックイベントでPostBackが発生するということを、すっかり失念していました。
顔から火が出る思いです。
1

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