У меня есть страница контента ASP с тремя сетками в одной UpdatePanel и отдельная кнопка обновления, связанная с каждой сеткой. Когда страница загружается, сетки пусты. Если я затем каждый раз нажимаю каждую кнопку обновления, по одному, и ждут между каждым шагом, все три сетки будут заполняться правильно.Нажмите несколько кнопок с RegisterStartupScript
В моей первой версии этой страницы я предварительно заполнил сетки перед рендерингом начальной загрузки страницы. Тем не менее, каждая сетка медленно обновляется, и я хочу улучшить пользовательский интерфейс - начальная нагрузка заняла около 30 секунд. Я думал, что могу AJAXify страницу, чтобы она сначала загружалась быстро (с пустыми сетками), тогда все три обновления обновляются независимо от Javascript, и каждая сетка заполняется, как только ее соответствующий вызов refresh возвращается, в любом порядке, в котором они оказались готов. Таким образом, пользователю не нужно ждать завершения всех трех, прежде чем, по крайней мере, некоторые данные будут доступны.
Если я хочу, чтобы автоматизировать начальное заполнение только одной сетки, я могу легко использовать эту технику:
if (!IsPostBack)
ClientScript.RegisterStartupScript(this.GetType(), "RefreshGridA", "document.getElementById('" + btnRefreshGridA.ClientID + "').click();", true);
Я много раз использовал, когда есть только один затянувшийся отчет я хочу стрелять , и он отлично работает здесь. Но это сценарий я не никогда не считал раньше - если я попытаюсь сделать это в течение более чем одной сетки:
if (!IsPostBack)
{
ClientScript.RegisterStartupScript(this.GetType(), "RefreshGridA", "document.getElementById('" + btnRefreshGridA.ClientID + "').click();", true);
ClientScript.RegisterStartupScript(this.GetType(), "RefreshGridB", "document.getElementById('" + btnRefreshGridB.ClientID + "').click();", true);
}
... тогда только обновления, который завершает является окончательным. Думаю, я не удивлюсь, потому что, если я реплицирую это вручную и сразу же зажгу одну кнопку обновления, я получаю тот же результат - первый вызов AJAX кажется заброшенным. Это то, что происходит?
Возможно ли выполнить то, что я пытаюсь сделать? Каков правильный подход для координации нескольких независимых, одновременных вызовов AJAX? Я подозреваю, что я не должен использовать кнопки вообще, но у меня был большой успех в этом подходе, когда задействована только одна кнопка. Я попытался объединить клики в один скрипт, и я попробовал обернуть каждую пару сетки/кнопки в своей собственной UpdatePanel, но я получаю тот же результат с обоими этими вариантами.