Я понял это.Чтобы выполнить частичную обратную передачу на сервер через UpdatePanel без использования скрытых элементов управления, сделайте это с помощью jQuery:
<script type="text/javascript">
$(document).ready(function () {
__doPostBack('<%=UpdatePanel1.ClientID %>');
});
</script>
Это позволит выполнить частичную обратную передачу на сервер для UpdatePanel с идентификатором UpdatePanel1, как только HTML DOMготов.Затем вы можете использовать жизненный цикл страницы ASP.NET, чтобы подключиться к любому событию, которое вам подходит.Я подключился к событию загрузки панели обновления:
protected void UpdatePanel1_Load(object sender, EventArgs e)
{
if (Page.IsPostBack && Session["InitializedKey"] == null)
{
Session["InitializedKey"] = true;
// do your initialization stuff here
}
}
Приведенный выше код будет работать только в том случае, если страница отправляется обратно и установлена переменная сеанса.Теперь вам нужно очистить переменную сеанса, когда пользователь обновляет страницу, так как здесь предполагается запустить этот код при первой обратной передаче и только при первой обратной передаче.Так что очистите переменную сеанса в Page_Load:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
Session[initializedKey] = null;
}
И если вы хотите показать индикатор прогресса, когда страница находится в частичной обратной передаче, сделайте этот javascript:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
if (args._postBackElement.id == '<%=UpdatePanel1.ClientID %>') {
$get('Progress').className = 'Progress';
}
}
function EndRequestHandler(sender, args) {
if (sender._postBackSettings.sourceElement.id == '<%=UpdatePanel1.ClientID %>') {
$get('Progress').className = 'Hidden';
}
}
</script>
Это требуеттег div с идентификатором «Progress» и всем, что вы хотите показать для прогресса в этом div.Вам также понадобится немного CSS, чтобы установить отображение и видимые стили тега div в классах с именами Hidden и Progress.Не забудьте выполнить обработку ошибок при частичной обратной передаче!