asp.netのダイアログ表示

タグの編集
投稿者 むね6  (社会人) 投稿日時 2011/3/31 12:43:03
asp.net (VB)にて、Webアプリを開発しています。

メッセージダイアログを表示するクラスを作成しましたが表示されません。

作成したクラスの概要を説明すると。

①まず、Buttonクラスの派生クラスを作成
②このクラスのインスタンス生成時、
   OnClientClickプロパティに、ダイアログを表示するメッセージをセット
③このクラスに、『 OnClickメソッドを呼び出す 』 メソッドを作成

④このクラスのメソッドを呼ぶことで、ダイアログが表示されることを期待していますが、
表示されません。

以下はプログラムコードです。
このプログラムでは、Button1をクリックした際に、
ダイアログを表示するメソッドを呼び出しています。

'**************************************
'*ダイアログを表示するクラス
'**************************************
Public Class ButtonEx

    Inherits Button

    Public Sub New()
        Me.OnClientClick = "return confirm('100件以上存在します。続行しますか?')"
    End Sub

    Public Sub DoClick()
        Me.OnClick(New EventArgs)
    End Sub
End Class

'**************************************
'*Webフォーム
'**************************************
Public Class WebForm1
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

        Dim dialog As ButtonEx

        dialog = New ButtonEx

        dialog.DoClick()

    End Sub
End Class

最終的には、ダイアログに表示するメッセージなどなどの必要なパラメータを、
引数、プロパティにするようにチューニングし、仕上げるつもりですが。

まずは、第一歩として、試験的に上記のような簡単なクラスを作成しましたが動きません。
投稿者 るきお  (社会人) 投稿日時 2011/3/31 13:22:02
Webアプリケーションの基本的な考え方にマッチしていません。

簡単に言うと、ボタンなどは画面に張り付けて張り付けて使うものです。
そうするとあとは.NETがうまいようにいろいろ設定・調整してくれてプログラマはあまり仕組みを考えなくても使えるようになります。
今回むね6さんは、画面に張り付けて使っていないので、上述の「うまいようにいろいろ設定・調整」を自分でする必要があります。

作成されたButtonExクラスはクライアント側にスクリプトを出力して、
そのスクリプトがダイアログを表示する機能があるようになっています。
しかし、むね6さんのプログラムでは処理がクライアントに帰る前に完結しているので、
スクリプトは出力もされなければ、実行もされません。

いろいろ仕組みはあるんですが、とりあえず、ボタンであれば画面に貼り付けて使いましょう。
ボタンとは関係なくダイアログを出すのが目的なのであれば、
ClientScript.RegisterStartupScriptメソッドを使ってスクリプトを実行させましょう。
投稿者 むね6  (社会人) 投稿日時 2011/4/4 16:43:52
るきおさん


回答ありがとうございました。

なるほどですね。

ちなみに、私の目的は、ダイアログを出すことです。

なので、早速、ClientScript.RegisterStartupScriptメソッドについて調査し、
作成してみたところ、うまくダイアログを出力できました。

ありがとうございました。
今後ともよろしくお願いいたします。