- PR -

DataGridで編集時に更新確認ダイアログを表示したい

1
投稿者投稿内容
koji
大ベテラン
会議室デビュー日: 2002/12/25
投稿数: 100
投稿日時: 2003-08-26 18:31
ASP.NET(C#)で開発しています。
DataGridにDBより取得したデータ一覧を表示させています。
データの更新時、削除時に確認ダイアログを表示したいのです
がどのように実現すればよろしいでしょうか?JavaScriptを
埋め込むしかないのでしょうか?そうであれば、どのように
埋め込むかも難しそうですが。
koji
大ベテラン
会議室デビュー日: 2002/12/25
投稿数: 100
投稿日時: 2003-08-28 10:15
他のスレを参考にして、
DataGrid1.Attributes["OnClick"] = "return confirm('確認して')";
このように設定してみましたが、DataGridのどの行を押してもメッセージが
表示されてしまいますね。編集する行だけで有効に出来れば良いのですが
無理でしょうか?DataGridで編集時に確認メッセージダイアログを表示する
のは不可能でしょうか?
くぅー
会議室デビュー日: 2003/08/06
投稿数: 12
投稿日時: 2003-08-28 10:36
VBですが過去のスレッドにありました。

e.Item.Cells(1).Attributes.Add("onClick", "return confirm('メッセージ');")
      ↑ボタン有るの列
でうまくいきましたが。
どうでしょう。
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-08-28 10:45
こんにちは。
スレッド見ました。

引用:

くぅーさんの書き込み (2003-08-28 10:36) より:
VBですが過去のスレッドにありました。

e.Item.Cells(1).Attributes.Add("onClick", "return confirm('メッセージ');")
      ↑ボタン有るの列
でうまくいきましたが。
どうでしょう。



上記の方法で設定すると、ボタンではなくて、セルをクリックすると表示されるようになります。
例えば、同じセルに「更新」、「削除」の二つのボタンがあると、多分望む形にならないと思います。
したがって、私は以下のように設定してあります。
多分、これで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 ]
koji
大ベテラン
会議室デビュー日: 2002/12/25
投稿数: 100
投稿日時: 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イベントって、そのオブジェクトに対する何らかのアクションが起こった
場合のイベント、という意味ですね?そう理解しました。
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-08-28 12:00
こんにちは。
スレッド見ました。

引用:

kojiさんの書き込み (2003-08-28 11:23) より:

ItemDataBoundイベントって、そのオブジェクトに対する何らかのアクションが起こった
場合のイベント、という意味ですね?そう理解しました。




C#の事は、よく分かりませんが、DataGridのイベントに「ItemDataBound」があると思います。私の場合は、ここで記述しています。
「ItemDataBound」はDataGridに一行データを記述するごとに発生するイベントです。

また同じメッセージが出ると書いてありましたが、セル【e.Item.Cells(1)】に【Attributes】設定を行っているので、セル内のどこをクリックしても同じメッセージが発生すると思います。
これを防ぐために「セル内のボタン【e.Item.Cells(0).Controls(0)】」と、もう一段下げて設定を行っています。
koji
大ベテラン
会議室デビュー日: 2002/12/25
投稿数: 100
投稿日時: 2003-08-28 13:18
Mr.タナカさん、レスありがとうございます。(Mr.がついているので、さんをつける
のは間違いでしょうか?)

なるほど、
ItemDataBoundイベントはDataGridに一行データを記述するごとに発生するイベント
なんですね。間違った認識をしてました。

おかげさまで機能を実現する事が出来ました。感謝します!
1

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