- - PR -
DataGrid_Updateイベントが発生しない
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 |
|
投稿日時: 2004-04-12 08:49
こっちはOracleなのに、ここはSQL Server?
Handlesがありませんが、どこかでAddHandlerしているのでしょうか?それが抜けているとか? |
|
投稿日時: 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 |
|
投稿日時: 2004-04-12 12:20
ちょっと横道:
自宅はSQL Server(というか、MSDEかな?)で、会社はOracleですね。 えっと、私のところでは、両方に対応しなければならない(かもしれない)ので、MustInheritなクラスを作って、そこで使用するデータのクラスを判別し、それぞれ用のクラスをインタフェースで返すようにしています。 Oracleの方は、System.Data.OracleClient名前空間の下に定義されているものを使えば、SQL Serverと同じように、プレースホルダに名前が使えますよ。 横道終わり: それで、『イベントが発生しない』のは、どのようにして確認しましたか?データが変わっていないから『イベントが発生していない』と判断したのか?と言う意味です。 |
|
投稿日時: 2004-04-12 12:43
Jittaさん毎度ありがとうございます。
イベントが発生しないと判断したのはDataGridの更新ボタンを押したときにDataBind処理しか走っていませんでした。それでUpdate処理の中にブレイクポイントを設定しステップ実行したのですがひっかかりません。これであきらかにイベントが発生しないと判断したのです。 |
|
投稿日時: 2004-04-12 13:05
>ソースはこんなかんじです。
If Not (IsPostBack) >サンプルソースを貼り付けました。 If IsPostBack = True Then どっちですか? # 言語も違うし |
|
投稿日時: 2004-04-12 13:19
>サンプルソースを貼り付けました。 If IsPostBack = True Then こっちを使っています。 |
|
投稿日時: 2004-04-12 13:24
数分前の投稿
DataGridのEditCommandColumnについて(2004-04-12 13:06by UCM) |