- - PR -
DataGridで編集時に更新確認ダイアログを表示したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-26 18:31
ASP.NET(C#)で開発しています。
DataGridにDBより取得したデータ一覧を表示させています。 データの更新時、削除時に確認ダイアログを表示したいのです がどのように実現すればよろしいでしょうか?JavaScriptを 埋め込むしかないのでしょうか?そうであれば、どのように 埋め込むかも難しそうですが。 | ||||
|
投稿日時: 2003-08-28 10:15
他のスレを参考にして、
DataGrid1.Attributes["OnClick"] = "return confirm('確認して')"; このように設定してみましたが、DataGridのどの行を押してもメッセージが 表示されてしまいますね。編集する行だけで有効に出来れば良いのですが 無理でしょうか?DataGridで編集時に確認メッセージダイアログを表示する のは不可能でしょうか? | ||||
|
投稿日時: 2003-08-28 10:36
VBですが過去のスレッドにありました。
e.Item.Cells(1).Attributes.Add("onClick", "return confirm('メッセージ');") ↑ボタン有るの列 でうまくいきましたが。 どうでしょう。 | ||||
|
投稿日時: 2003-08-28 10:45
こんにちは。
スレッド見ました。
上記の方法で設定すると、ボタンではなくて、セルをクリックすると表示されるようになります。 例えば、同じセルに「更新」、「削除」の二つのボタンがあると、多分望む形にならないと思います。 したがって、私は以下のように設定してあります。 多分、これでOKではないかと... 「ItemDataBound」のイベントです。 Dim a As System.Web.UI.WebControls.Button If e.Item.ItemIndex >= 0 Then 'オブジェクトの設定 a = e.Item.Cells(0).Controls(0) ↑ボタンのある列の、メッセージを表示したいボタン End If a.Attributes("OnClick") = "return confirm('?')" ■追記■ すみません。 VB.NETで記述しています。 [ メッセージ編集済み 編集者: Mr.タナカ 編集日時 2003-08-28 10:55 ] | ||||
|
投稿日時: 2003-08-28 11:23
くぅーさん、Mr.タナカさん
ありがとうございます。非常に助かります。 くぅーさんに教えていただいた e.Item.Cells(1).Attributes.Add("onClick", "return confirm('メッセージ');") をC#に変更して、 e.Item.Cells[1].Attributes.Add("OnClick", "return confirm('メッセージ');"); に変更しましたが、どのボタンを押してもメッセージダイアログが表示されませんでした。 不可解です。 Mr.タナカさんに教えていただいた方法を以下のようにC#にして微修正しました。 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { System.Web.UI.WebControls.Button a = null; if (e.Item.ItemIndex >= 0 && DataGrid1.EditItemIndex == e.Item.ItemIndex) { //オブジェクトの設定 a = (System.Web.UI.WebControls.Button)e.Item.Cells[1].Controls[0]; //↑ボタンのある列の、メッセージを表示したいボタン a.Attributes["OnClick"] = "return confirm('?')"; } } if文のところで、アクションが起こった行と編集中の行が同じという条件を追加しました。 これで実現する事が出来ました。どうもありがとうございました! ItemDataBoundイベントって、そのオブジェクトに対する何らかのアクションが起こった 場合のイベント、という意味ですね?そう理解しました。 | ||||
|
投稿日時: 2003-08-28 12:00
こんにちは。
スレッド見ました。
C#の事は、よく分かりませんが、DataGridのイベントに「ItemDataBound」があると思います。私の場合は、ここで記述しています。 「ItemDataBound」はDataGridに一行データを記述するごとに発生するイベントです。 また同じメッセージが出ると書いてありましたが、セル【e.Item.Cells(1)】に【Attributes】設定を行っているので、セル内のどこをクリックしても同じメッセージが発生すると思います。 これを防ぐために「セル内のボタン【e.Item.Cells(0).Controls(0)】」と、もう一段下げて設定を行っています。 | ||||
|
投稿日時: 2003-08-28 13:18
Mr.タナカさん、レスありがとうございます。(Mr.がついているので、さんをつける
のは間違いでしょうか?) なるほど、 ItemDataBoundイベントはDataGridに一行データを記述するごとに発生するイベント なんですね。間違った認識をしてました。 おかげさまで機能を実現する事が出来ました。感謝します! |
1