2011-07-28 3 views
11

私はasp.net Webページにupdatepanelを持っています。私はボタンでトリガするinseadのjavascript関数内でupdatepanelをトリガしたいと思います。
これを行うために、私は__doPostBack('myUpdatePanel', '');機能を使用しました。しかし、私はそれがページ全体のポストバックを引き起こすと思います。この関数を呼び出すと、私のdocument.ready関数も実行されます。私はいくつかの点が欠けているかもしれません。
javascript関数内でupdatepanelをトリガする方法はありますか?javascript関数内でupdatepanelを起動する方法

答えて

18

更新パネルの中に隠しボタンを入れて、このボタンのクリックを発射するためにJavaScriptを使うことができれば、あなたが望むことができると思います。

<script type="text/javascript"> 
     function Update_UpdatePaanel() { 
      document.getElementById('<%= YourButton.ClientID %>').click() 
     } 
    </script> 

ボタンは非表示のdivの内側でなければならないとあなたはfalseに設定した場合、コントロールは表示されませんとJavaScriptエラーが発生しているためvisibile =「false」を設定しないでください。

<div style="display:none"> 
     <asp:Button ID="YourButton" runat="server" /> 
    </div> 
+0

本当に可能ですか?だから私はaspbuttonのクリックを発射する方法を探す必要があります。あなたはjavascriptで非表示aspbuttonのクリックイベントを発生させる方法を知っていますか? – Fer

+0

document.getElementById( '<%#YourButton.ClientID%>')。click() –

+0

サンプルコードを使用して回答を更新しました。 –

3

だけでjavascript関数を作成し、生成されたポストバックイベントを実行します。上記のステートメントがあなたのaspxページの上に置いて、それが原因とサーバーから生成された正確に同じコードを参照している

<%=ClientScript.GetPostBackEventReference(myUpdatePanel, "")%> 

をあなたのパネルのポストバック。あなたは、クライアント側の関数の中にそれを置くことによって、それを使用することができます。

function fncUpdatePanel() { 
    <%=ClientScript.GetPostBackEventReference(myUpdatePanel, "")%>; 
} 

は、次に、あなたのページ上の任意のイベント(でもmouseoverイベント)にその機能を付加することができます。この例では、サーバー側でイベントを添付しています:

myUpdatePanel.attributes('onmouseover', 'fncUpdatePanel()') 
+0

詳細を説明できますか?私はJavaScriptコードでパネルをトリガーする必要があります。あなたのコードはサーバー側にあるようですか? – Fer

+0

追加の詳細 – rkw

+1

GetPostBackEventReferenceは非同期ポストバックではなくポストバックのため、これは機能しません。代わりにGetCallbackEventReferenceを使用しようとしていますが、正しく動作するように正しいコントロール参照を渡すことはありません。 – jlafay

関連する問題