[HOWTO] Visual Basic .NET を使用して .aspx ページの特定のイベントを手動でポストバックする

文書翻訳 文書翻訳
文書番号: 328923 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、コントロールの特定のイベントに応答して、生成される HTML コードをサーバーにポストバックするように .aspx ページを設定する方法について、手順を追って説明します。例として、この資料では Internet Explorer WebControls の TreeView コントロールを使用します。

AutoPostBack プロパティ

  • True : コントロールの AutoPostBack を True に設定すると、ポストバックを実行する必要のないイベントに応答して、サーバーへのポストバックが実行されることがあります。

    たとえば、TreeView コントロールで AutoPostBack を True に設定すると、onExpand イベント、onCollapse イベント、onCheck イベント、および onSelectedIndexChange イベントに応答して、ポストバックが発生します。
  • False : AutoPostBack を False に設定すると、特定のイベントに応答して、手動でポストバックを行います。

コードの作成

onSelectedIndexChange イベントに応答して手動でポストバックを行うには、次の手順を実行します。
  1. Web アプリケーションを作成し、.aspx ページに TreeView コントロールを配置します。
  2. .aspx ページで、TreeView コントロールの AutoPostBack プロパティを False に設定します。
  3. TreeView の Nodes プロパティで、Collection の省略記号ボタン (...) をクリックし、TreeView のノード コレクションにノードと子ノードを追加します。
  4. HTML ページの onload イベントを処理し、initTree 関数を呼び出します。このクライアント側の関数は、.aspx ページの Page_Load イベントで生成されます。

    .aspx ページの HTML ビューで、次のように body タグに onload イベント ハンドラを追加します。
    <body onload="initTree()">
    					
  5. 次の Page_Load 関数のコードを、作成した .aspx ファイルのコード ビハインド クラスの Page_Load 関数に追加します。
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim strTreeName As String = "TreeView1"
        Dim strRef As String = Page.GetPostBackEventReference(TreeView1)
        Dim strScript As String = "<script language=""JavaScript""> " & vbCrLf & _
            "<!-- " & vbCrLf & _
            "	function initTree() { " & vbCrLf & _
            "		" & strTreeName & ".onSelectedIndexChange = function() { " & vbCrLf & _
            "			if (event.oldTreeNodeIndex != event.newTreeNodeIndex) " & vbCrLf & _
            "				this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex & ',' & event.newTreeNodeIndex); " & vbCrLf & _
            "			window.setTimeout('" & strRef.Replace("'", "\'") & "', 0, 'JavaScript'); " & vbCrLf & _
            "		} " & vbCrLf & _
            "	} " & vbCrLf & _
            "// --> " & vbCrLf & _
            "</script>"
    
        Page.RegisterClientScriptBlock("InitTree", strScript)
    End Sub
    					

コードの説明

コード作成の経緯

この資料で前述したコードは、次のプロセスを使用して作成されました。
  • .aspx ページを作成し、TreeView コントロールの AutoPostBack を True に設定しました。
  • Internet Explorer ブラウザで .aspx ページを表示し、ソースを .html ファイルに保存しました。
  • TreeView コントロールの AutoPostBack を False に設定し、再びブラウザでページを表示しました。
  • 2 つのファイルを比較し、相違点をメモし、この資料で前述したコードの生成に役立てました。

コードの詳細

  • この資料の Page_Load 関数のコードにより、ブラウザで次のコードが表示されます。
    <script language="JavaScript">
    <!-- 
        function initTree() { 
            TreeView1.onSelectedIndexChange = function() { 
                if (event.oldTreeNodeIndex != event.newTreeNodeIndex) 
                    this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex & ',' & event.newTreeNodeIndex); 
    
                window.setTimeout('__doPostBack(\'TreeView1\',\'\')', 0, 'JavaScript'); 
            } 
        } 
    // -->
    </script>
    						
    ブラウザに HTML ページがロードされると、initTree 関数が実行されます。initTree 関数により、TreeView1 の onSelectedIndexChange イベントが上書きされ、onSelectedIndexChange イベントがページのイベント キューに追加され、サーバーにポストバックされます。
  • 新しい onSelectedIndexChange 関数の 1 行目、
    if (event.oldTreeNodeIndex != event.newTreeNodeIndex) 
        this.queueEvent('onselectedindexchange', event.oldTreeNodeIndex + ',' + event.newTreeNodeIndex);
    						
    は、保存されている .html ファイルで定義されている関数の元の定義から直接取得されます。
  • TreeView の AutoPostBack を True に設定すると、HTML で次のコードが表示されます。
    window.setTimeout('__doPostBack(\'TreeView1\',\'\')', 0, 'JavaScript');
    						
    ポストバックのメカニズム (この例では __doPostBack) は将来変更される可能性があるため、次のコードを使用してサーバー上に関数を生成します。
    string strRef = Page.GetPostBackEventReference(TreeView1);
    					
    Page_Load でポストバックのイベント参照が使用され、クライアントで PostBack イベントが生成されます。

関連情報

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
305140 ASP.NET ロードマップ

319441 [HOWTO] Visual Basic .NET を使用して、ノードを TreeView WebBrowser コントロールに動的に追加する方法
Internet Explorer WebControls Reference
http://msdn.microsoft.com/library/default.asp?url=/workshop/webcontrols/webcontrols_entry.asp

プロパティ

文書番号: 328923 - 最終更新日: 2006年10月11日 - リビジョン: 3.2
この資料は以下の製品について記述したものです。
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
キーワード:?
kbhowtomaster kbservercontrols KB328923
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com