Два дня ищу решение своей проблемы и не нашел ничего, что могло бы помочь. У меня есть две страницы: страница 1 и страница 2 Страница1 содержит параметры, которые будут отправлены на страницу2 и кнопку "Создать" Страница 2 содержит GridView, а на page_load у меня есть

GetParameters() ;   // extract parameters
PrepareParameters(); // prepare local variable 
DataTable dt = CreateDataTable(); // create the BoundField/Columns based on prepared local variables
myGridView.DataSource = dt;
myGridView.DataBind();

Моя проблема в том, что метод PrepareParameters() требует времени из-за огромного количества данных, даже если он оптимизирован. Когда я нажимаю кнопку «Создать», браузер не переходит на страницу 2, а вместо этого не отвечает и остается на странице 1, и пользователь не знает, что происходит. Итак, мне интересно, как перенаправить браузер на страницу 2 и показать пользователю анимацию загрузки в сетке до тех пор, пока PrepareParameters() не завершит обработку данных и не отобразит GridView после завершения? Спасибо за ответ.

0
Bes-m M-bes 27 Ноя 2011 в 14:34

1 ответ

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

Поместите это изображение вверху/внизу сетки, назначьте ему некоторый идентификатор и установите свойство по умолчанию Visible = false. Теперь при нажатии кнопки вызовите javascript, где вы сделаете это изображение видимым.

Образец кода

    <html>
<head>
<script type="text/javascript" language="JavaScript">

function Loading() {
  document.getelemanebyId('Img').visibility = visible;
} 
</script>
</head>
<body>

<form action="" method="POST" id="myForm">

//Gridview control here
<img id="Img" src="give image file path" runat="server" visible="false"/>
<button name="Create" onClientClick="Loading();" runat="server" >

</form>
</body>
</html>
0
pramodtech 27 Ноя 2011 в 14:51
Привет Pramodtech, Спасибо за ваш ответ. На самом деле я видел это решение везде, и я думаю, что оно не подходит для моей проблемы, но тем не менее я попробовал и не работает. Браузер остается на странице 1, пока браузер не завершит работу.
 – 
Bes-m M-bes
27 Ноя 2011 в 15:09
Да, браузер останется на той же странице, будет отображаться только загружаемое изображение, чтобы пользователь не запутался в том, что происходит. Другая вещь, которую вы можете сделать, это сохранить сетку в div и скрыть эту сетку, используя вышеупомянутый javascript. Я не думаю, что вы можете перенаправить на следующую страницу, пока операция со страницы 1 не будет завершена.
 – 
pramodtech
27 Ноя 2011 в 15:15
Но PrepareParameters() - это метод на странице 2 и в сетке?
 – 
Bes-m M-bes
27 Ноя 2011 в 16:40