- - PR -
【ASP.NET】Labelの更新(PostBackについて?)
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-03-13 14:56
同一フォームにLabelとTextBoxとButtonがあり、
Labelにはデータバインドしたデータを表示しています。 TextBoxには変更内容を入力し、Buttonを押すと データに変更(更新)をかけるようにしようと思っています。 更新まではできたのですが、Labelに反映されません。 ページロード内のLabelに表示するためのデータバインドにおけるポストバックを 記述しないと、Buttonを二回押すと反映されるのですが、 ポストバックを記述すると反映されません。 ボタンクリックイベントにlabelの更新の記述をしたらいけると思うのですが(?) どのように書けばよいのでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2006-03-13 15:03
ボタンクリックイベント内で、データの更新をしたあとにデータバインドを
実行すればいいような気がしますが。。。 | ||||
|
投稿日時: 2006-03-14 09:11
自分も どっとねっとふぁんさんのおっしゃる通りしたのですが、
反映されません。 ボタンを押したらすぐにテキストボックスの内容をラベルに表示するには なにかまだ別に記述するかしないといけないのでしょうか。 | ||||
|
投稿日時: 2006-03-14 09:20
データバインド辺りのコードを見せてもらってもよろしいですか?
_________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-03-14 10:53
ポストバック時も毎回初期値を設定していると言う、初心者にありがちなミスな予感がします。ラベルの内容を変更している場所全てにブレークポイントを置いて、どのように動作しているか精査してください。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2006-03-14 13:28
RegisterButtonを押下するとCheckerTextBoxの内容をNameViewLabelに反映する(データベース更新)
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ページを初期化するユーザー コードをここに挿入します。 'クエリ文字列の受け取りと代入 Dim month As String month = Request.QueryString("month") '選択月をSessionにデータを退避しておく Session("Month") = month If Not IsPostBack Then SqlDataAdapter1.Fill(ListSelectDataSet1) ListSelectDataView1.RowFilter = "部署CD ='" & User.Identity.Name & "'and 回答年月=" & month DataGrid1.DataBind() End If 'M_点検者から点検者名を表示 If Not IsPostBack Then Dim cn As New SqlConnection(ConfigurationSettings.AppSettings("cnstr")) Dim cmd As New SqlCommand("Select 点検者 From M_点検者 Where 部署CD ='" & User.Identity.Name & "'and 回答年月=" & month, cn) cn.Open() '一行だけ読み取るときはExecuteScalar、読んだデータがNULLか評価する場合はDBNullを使う NameViewLabel.Text = IIf(cmd.ExecuteScalar() Is DBNull.Value, "<未入力>", cmd.ExecuteScalar()) '処理済の場合、点検者名入力テキストボックス(CheckerTextBox)及び登録ボタン(RegisterButton)は非表示 Dim cmd2 As New SqlCommand("Select 状態 From M_回答年月 Where 回答年月=" & month, cn) Dim state As Integer = cmd2.ExecuteScalar If state <> 1 Then CheckerTextBox.Enabled = False CheckerTextBox.Visible = False RegisterButton.Enabled = False RegisterButton.Visible = False End If cn.Close() End If End Sub Private Sub RegisterButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RegisterButton.Click If NameViewLabel.Text = "<未入力>" And CheckerTextBox.Text = "" Then MessageLabel.Text = "点検者名を入力してください!" Exit Sub End If Dim cn As New SqlConnection(ConfigurationSettings.AppSettings("cnstr")) Dim cmd As New SqlCommand("Proc点検者更新", cn) cmd.CommandType = CommandType.StoredProcedure Dim BushoCD As SqlParameter = cmd.Parameters.Add("@BushoCD", SqlDbType.NVarChar, 3) BushoCD.Value = User.Identity.Name Dim month As SqlParameter = cmd.Parameters.Add("@month", SqlDbType.Int, 20) month.Value = Request.QueryString("month") Dim CheckerName As SqlParameter = cmd.Parameters.Add("@CheckerName", SqlDbType.NVarChar, 20) CheckerName.Value = CheckerTextBox.Text cn.Open() cmd.ExecuteNonQuery() Dim month2 As String month2 = Request.QueryString("month") Dim cmd2 As New SqlCommand("Select 点検者 From M_点検者 Where 部署CD ='" & User.Identity.Name & "'and 回答年月=" & month2, cn) NameViewLabel.Text = cmd.ExecuteScalar() cn.Close() End Sub End Class よろしくおねがいします。 | ||||
|
投稿日時: 2006-03-14 15:07
これって、データバインドとはいわないよーな。。。
単純にデータとってきていれてるだけですよね。 で、原因はデータの更新とデータの検索で同じコネクションを使いまわしてるからだと思います。 データの更新時に一度コネクションを閉じないと、その更新は反映されないんじゃないかと思います。 更新が反映されていない状態でデータを検索してきてしまって、そのあとコネクションを閉じることにより更新が反映される、という状況になっているんじゃないでしょうか。 | ||||
|
投稿日時: 2006-03-14 15:33
あ。。。なっなっ
確かにデータバインドなんてしてませんねorz すみません。 で、続きなのですが、 Dim CheckerName As SqlParameter = cmd.Parameters.Add("@CheckerName", SqlDbType.NVarChar, 20) CheckerName.Value = CheckerTextBox.Text cn.Open() cmd.ExecuteNonQuery() cn.Close() Dim month2 As String month2 = Request.QueryString("month") Dim cn2 As New SqlConnection(ConfigurationSettings.AppSettings("cnstr")) Dim cmd2 As New SqlCommand("Select 点検者 From M_点検者 Where 部署CD ='" & User.Identity.Name & "'and 回答年月=" & month2, cn) cn2.Open() NameViewLabel.Text = cmd.ExecuteScalar() cn2.Close() こんなかんじにしたのですが、いぜんとしてかわりありません。 そもそも分かってないんでしょうか。 ご教授願います |