- PR -

DataGrid_Updateイベントが発生しない

投稿者投稿内容
ヒロミッチ
会議室デビュー日: 2004/04/08
投稿数: 16
投稿日時: 2004-04-11 23:48
またまた初心者の質問で申し訳ありません。
DataGridを使用しての更新処理ですがどうしても更新ボタンを押してもUpdateイベントに処理に行きません。それ以外のEdit,Cancelイベントは通るのですが、原因が分かりません。Page_load処理で何かぬけているのですか。教えてください.


ソースはこんなかんじです。

Sub Page_Load(Src As Object, E As EventArgs)
If Not (IsPostBack)
BindGrid()
End If
End Sub
Sub MyDataGrid_Edit(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = CInt(E.Item.ItemIndex)
BindGrid()
End Sub

Sub MyDataGrid_Cancel(Sender As Object, E As DataGridCommandEventArgs)
MyDataGrid.EditItemIndex = -1
BindGrid()
End Sub

Sub MyDataGrid_Update(Sender As Object, E As DataGridCommandEventArgs)
Dim DS As DataSet
Dim MyCommand As SqlCommand

Dim UpdateCmd As String = "UPDATE Authors SET au_id = @Id, au_lname = @LName, au_fname = @FName, phone = " _
& " @Phone, address = @Address, city = @City, state = @State, zip = @Zip, contract = @Contract where au_id = @Id"

MyCommand = New SqlCommand(UpdateCmd, MyConnection)
以下更新情報
End Sub
Sub BindGrid()
Dim DS As DataSet
Dim MyCommand As SqlDataAdapter
MyCommand = new SqlDataAdapter("select * from Authors", MyConnection)

DS = new DataSet()
MyCommand.Fill(DS, "Authors")

MyDataGrid.DataSource=DS.Tables("Authors").DefaultView
MyDataGrid.DataBind()
End Sub
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-12 08:49
こっちはOracleなのに、ここはSQL Server?


 Handlesがありませんが、どこかでAddHandlerしているのでしょうか?それが抜けているとか?
ヒロミッチ
会議室デビュー日: 2004/04/08
投稿数: 16
投稿日時: 2004-04-12 10:22
すみません。Oracleです。自宅からだったのでサンプルソースを貼り付けました。
開発ソースをもう一度確認していただけますか。お願いします。


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化する ユーザー コードをここに挿入します。
If IsPostBack = True Then
BindGrid()
End If

End Sub

Private Sub DataGrid2_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid2.UpdateCommand

更新ロジック
BindGrid()
End Sub
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-12 12:20
ちょっと横道:

 自宅はSQL Server(というか、MSDEかな?)で、会社はOracleですね。

 えっと、私のところでは、両方に対応しなければならない(かもしれない)ので、MustInheritなクラスを作って、そこで使用するデータのクラスを判別し、それぞれ用のクラスをインタフェースで返すようにしています。

 Oracleの方は、System.Data.OracleClient名前空間の下に定義されているものを使えば、SQL Serverと同じように、プレースホルダに名前が使えますよ。


横道終わり:

 それで、『イベントが発生しない』のは、どのようにして確認しましたか?データが変わっていないから『イベントが発生していない』と判断したのか?と言う意味です。
ヒロミッチ
会議室デビュー日: 2004/04/08
投稿数: 16
投稿日時: 2004-04-12 12:43
Jittaさん毎度ありがとうございます。
イベントが発生しないと判断したのはDataGridの更新ボタンを押したときにDataBind処理しか走っていませんでした。それでUpdate処理の中にブレイクポイントを設定しステップ実行したのですがひっかかりません。これであきらかにイベントが発生しないと判断したのです。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-04-12 13:05
>ソースはこんなかんじです。
If Not (IsPostBack)

>サンプルソースを貼り付けました。
If IsPostBack = True Then

どっちですか?
# 言語も違うし
ヒロミッチ
会議室デビュー日: 2004/04/08
投稿数: 16
投稿日時: 2004-04-12 13:19

>サンプルソースを貼り付けました。
If IsPostBack = True Then

こっちを使っています。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-04-12 13:24
数分前の投稿
DataGridのEditCommandColumnについて(2004-04-12 13:06by UCM)

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