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呼び出しを行うことで、これを行うためのより良い、よりクリーンな方法はありますか?