- PR -

ASP.NET-イベントからMessageBoxを表示するには?

投稿者投稿内容
ザク
会議室デビュー日: 2003/01/14
投稿数: 2
投稿日時: 2003-01-14 16:54
早速の回答有難うございます。

ご指摘のようにfunction内のif文でjavascriptは処理できるのですが(下記例)、
これはjavascriptの処理であり、.netではありません。

yesならばトランザクションの開始、noならば中止というようにしたいのです。
javascriptならボタンクリックを処理できるのですが、.netのコードでは
できないのかなということなんです。

例:
    Dim wkscript As String
wkscript = ""
wkscript = wkscript & "<SCRIPT language=""JavaScript"">" & vbCrLf
wkscript = wkscript & "<!--" & vbCrLf
wkscript = wkscript & " answer=confirm(""更新しますか?"");" & vbCrLf
wkscript = wkscript & "if(answer==true)" & vbCrLf
wkscript = wkscript & "yesの処理";" & vbCrLf
wkscript = wkscript & "else" & vbCrLf
wkscript = wkscript & "noの処理";" & vbCrLf
wkscript = wkscript & "// -->" & vbCrLf
wkscript = wkscript & "</SCRIPT>" & vbCrLf
Response.Write(wkscript)


rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2003-01-14 17:07
>javascriptならボタンクリックを処理できるのですが、.netのコードでは
>できないのかなということなんです
できません。
JavaScriptはクライアント側で、.NETはサーバー側で作動するのでJavaScriptのconfirmで呼び出されたどのボタンがユーザーがクリックしたはポストバックなどを利用しない限りサーバー側ではわかりません。

ザクさんのなさりたいことは
押されたボタンに応じてフラグをセットしてからポストバックすれば多分出来ると思います。
ユーパロ
会議室デビュー日: 2002/11/28
投稿数: 2
投稿日時: 2003-01-17 21:37
私は下記のようなユーザコントロールを使用しています。
サーバー側でイベントを処理しその後にMsgBoxに出したいメッセージを設定しています。

----ascx------
<script language="javascript">
window.alert('<%= Message %>');
</script>

----ascx.vb------
Private m_strMessage As String = "エラーだよ"
Public Property Message() As String
Get
Return m_strMessage
End Get
Set(ByVal Value As String)
m_strMessage = Value
End Set
End Property

ASPXページに貼り付けるときはEnableViewStateとVisibleをFalseにしておきます。
ポストバックされたイベントの中でこのコントロールをVisibleをTrueにしてやれば
ブラウザにMsgBoxが表示されます。自分でも結構気に入って使っています。




[ メッセージ編集済み 編集者: ユーパロ 編集日時 2003-01-17 21:54 ]
masas
常連さん
会議室デビュー日: 2002/05/23
投稿数: 25
投稿日時: 2003-01-31 01:43
ユーパロさんのアドバイスを見て作って見ました。

ユーザコントロールはIPostBackEventHanderインターフェースを継承してください。

基本的にはユーザコントロールですが、ascの方には何も記載しません。
その代わりにasc.vb(cs)のRender関数から吐き出します。
Alertの代わりにConfirmを使いす。
if (Confirm(message))
{
// YESの処理
}
else
{
// NOの処理
}
なんですが、YES,NOの両方にGetPostBackEventReferenceを使いPostBackイベントを定義します。
これを入れることによって、YESが押されたとき、NOが押されたときのイベントをvb(cs)のRaisePostBackEvent関数で受け取れるようになります。
あとは、このユーザコントロールに自分のイベントを定義し、ページでこのユーザコントロールのイベント呼び出しをセットしてあげれば、アプリケーション側で、Confirmの結果を受け取れるようになります。
ユーパロさんのやり方が無かったら思いつきませんでした。大変勉強になりました。

BONTA
会議室デビュー日: 2002/12/09
投稿数: 13
投稿日時: 2003-02-15 13:26
どうもです。

私も似たような処理を致したく masas さんのアドバイスを参考にして
作成してみたのですが、いまひとつ知識不足でピンときません。

なので、宜しければ具体的にascx.vbのサンプルコードを提示して
いただくわけにはいかないでしょうか?
あと利用する側のaspx.vbのサンプルコードも是非見せてほしいです。

因みに私がしたいことはDataGrigの削除ボタンをクリックしたときに
このMessageを表示しユーザがOKをクリックしたときに削除を実行する処理を
実現したいと考えております。

宜しくお願いいたします。
masas
常連さん
会議室デビュー日: 2002/05/23
投稿数: 25
投稿日時: 2003-02-19 03:03
masasです。

↑に書いた方法でも出来ますが、もっとスマートな方法があります。
DataGridのItemDataBoundイベントで、削除ボタンを取得し
btn.Attributes.Add("onClick", "return confirm('メッセージ');");
を入れるだけです。
BONTA
会議室デビュー日: 2002/12/09
投稿数: 13
投稿日時: 2003-02-19 10:12
masas さん大変ありがとう御座いました。

参考にさせて頂き、ItemDataBoundイベントに以下のコードを挿入して対処できました。
(このDataGridはCells(2)が削除のリンクボタンになっております。)

e.Item.Cells(2).Attributes.Add("onClick", "return confirm('削除しますか?');")

ところで、この時点で不要になってしまったコードなので本来不要かとは思いますが
やはり勉強のため今後の参考にしたいので、masas さんの作成したascx.vb(cs)の
サンプルコードと利用する側のaspx.vb(cs)のサンプルコードを是非見せて頂く訳には
いきませんか?(私はJavaScriptは初心者なので...)




Micky
大ベテラン
会議室デビュー日: 2002/09/04
投稿数: 137
投稿日時: 2003-07-02 12:24


[ メッセージ編集済み 編集者: Micky 編集日時 2003-07-02 13:12 ]

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