запуск событий ASP.NET из JavaScript - PullRequest
2 голосов
/ 05 декабря 2008

Я делаю несколько прямых асинхронных вызовов из javascript, используя объект XMLHTTPRequest. В случае успеха, с определенными возвращаемыми значениями, я хотел бы сделать асинхронную запись обратно на панели обновлений и запустить некоторые методы на стороне сервера. Вот как я сейчас это реализую:

<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, который приведет к асинхронной обратной передаче панели обновления и выполнению метода на стороне сервера?

Ответы [ 2 ]

3 голосов
/ 05 декабря 2008

Будьте осторожны с UpdatePanels, они могут быть очень тяжелыми, если не используются должным образом, как я объясняю здесь .

Но JavaScript для отправки формы:

__doPostBack('eventTarget','eventArguments');

Итак, в вашем примере у вас будет что-то вроде:

__doPostBack('<%= btnHidden.ClientID %>','');
1 голос
/ 05 декабря 2008

Вы можете удалить скрытую кнопку и позвонить

__ doPostBack ( 'upStatus', '');

Это приведет к асинхронному обновлению для этой панели обновлений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...