Fire Async метод при загрузке страницы с помощью AJAX - PullRequest
2 голосов
/ 02 октября 2008

Я использую ASP.NET 2.0 с расширениями AJAX (1.0?) И мне интересно, можно ли асинхронно вызывать метод и заполнять результаты на странице после его загрузки.

У меня есть gridview, который заполняется довольно длительным SQL-запросом. Я бы предпочел, чтобы страница всплывала и результаты возвращались обратно, когда они возвращались с сервера, вместо того, чтобы заставлять пользователя смотреть на пустую страницу, пока все не будет обработано.

Ответы [ 2 ]

1 голос
/ 02 октября 2008

Вы можете использовать asp: UpdatePanel и вставить туда сетку. Они просто вызывают вызов AJAX во время загрузки. Вы используете событие Sys.Application.load. Проверьте это здесь для получения дополнительной информации: http://www.asp.net/ajax/documentation/live/overview/AJAXClientEvents.aspx

0 голосов
/ 15 мая 2009

Вы можете разместить скрытую кнопку внутри панели обновлений и сделать PostBack для этой кнопки. Это не элегантное решение, но оно отлично работает.

Внутри панели обновлений вы напишите что-то вроде этого.

<div style="visibility:hidden">
  <asp:Button ID="btnLoad" OnClick="btnLoad_Click" runat="server"/>
</div>

В вашем событии Page_Load вы должны зарегистрировать скрипт для PostBack:

protected void Page_Load(object sender, EventArgs e)
{    
    if (!Page.IsPostBack)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "InitialLoad" + this.ClientID, Page.ClientScript.GetPostBackEventReference(btnLoad, "")+";", true);
    }
}

Затем вы можете написать код, который будет выполняться при запуске, в методе btnLoad_Click (событие OnClick для кнопки).

Я попробовал другой подход с использованием таймера AJAX и отключением его на первом тике, но иногда я получаю более одного тика до выполнения кода, поэтому я отказался от этого решения.

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