2

XMLHTTPRequestオブジェクトを使用して、JavaScriptから直接非同期呼び出しを行っています。成功したら、特定の戻り値を使用して、更新パネルに非同期の投稿を行い、サーバー側のメソッドをいくつか実行したいと思います。これは私が今それをどのように実装しているかについてです:

<script language="javascript">
      function AjaxCallback_Success(objAjax) {
        if (objAjax.responseText == "refresh") {
                document.getElementById('<%= btnHidden.ClientID %>').click();
         }
      }
    </script>
    <asp:UpdatePanel ID="upStatus" runat="server">
    <ContentTemplate>
<asp:Button ID="btnHidden" runat="server" style="display: none;" OnClick="SomeMethod" />
    <asp:DropDownList ID="ddlStatus" field="Orders_Status" parent="Orders" runat="server">
    </asp:DropDownList>
    </ContentTemplate>
    </asp:UpdatePanel>

これはワークフローと関係があります。注文の処理中に誰かが請求した場合、ステータスドロップダウンで使用可能なオプションが実際に変更されます。したがって、時限で変更をチェックし、通常は発生しない変更がある場合は、更新パネルがポストバックし、ドロップダウンリストがajax応答テキストからのさまざまな戻り値に基づいて新しいデータテーブルに再バインドされます。 。

私の元のコードは実際にはこれよりもはるかに複雑ですが、概念を明確にするために十分に抽象化しています。非表示のボタンを削除し、更新パネルが非同期でポストバックしてサーバー側のメソッドを実行するようにする、まっすぐなjavascript呼び出しを行うことで、これを行うためのより良い、よりクリーンな方法はありますか?

4

2 に答える 2

3

UpdatePanelには十分注意してください。ここで説明するように、適切に使用しないと非常に重くなる可能性があります。

ただし、フォームを送信するためのJavaScriptは次のとおりです。

__doPostBack('eventTarget','eventArguments');

したがって、あなたの例では、次のようなものになります。

__doPostBack('<%= btnHidden.ClientID %>','');
于 2008-12-05T19:43:43.607 に答える
1

非表示のボタンを削除して電話をかけることができます

__doPostBack('upStatus'、'');

これにより、その更新パネルの非同期更新が発生します

于 2008-12-05T19:48:01.570 に答える