Ленивая загрузка с использованием панели обновления и таймера в C # - PullRequest
0 голосов
/ 25 марта 2011

После загрузки панели обновления через таймер я не могу сделать какой-либо асинхронный запрос от панели обновления.

пример aspx-кода:

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>

    <%--The Timer that causes the partial postback--%>
    <asp:Timer runat="server" Interval="100" OnTick="Timer_Tick" Id="Timer1"/>                

    <asp:ImageButton ID="btnSaveEmployeePrevJobs" runat="server" ImageAlign="AbsBottom"
    ImageUrl="~/Images/saveOff.gif" onmouseout="this.src='../Images/saveOff.gif'"
    onmouseover="this.src='../Images/saveOn.gif'" OnClick="btnSaveEmployeePrevJobs_Click"/>

</ContentTemplate>

Код на стороне сервера:

private void Timer_Tick(object sender, EventArgs args)
{
    Timer1.Enabled = false;
    //some code
}

protected void btnSaveEmployeePrevJobs_Click(object sender, EventArgs e)
{
    // some code
}

Проблема: невозможно вызвать событие щелчка по нажатию кнопки, обычно включается таймер (не знаю почему), и он вызывает сам себя вместо вызова события щелчка ..

Заранее спасибо ..

Ответы [ 3 ]

0 голосов
/ 25 марта 2011

Вы пробовали с:

protected void Timer1_Tick(object sender, EventArgs e)
{
    //Timer1.Enabled = false;
    Label1.Text = "Panel refreshed at: " + DateTime.Now.ToLongTimeString();
}

Обратите внимание, что если вы устанавливаете UpdateMode="Conditional", вам необходимо явно вызвать UpdatePanel.Update(); в противном случае удалите атрибут.

Оформление заказа: Учебное пособие: Как обновить элемент управления UpdatePanel через определенный интервал времени

0 голосов
/ 28 марта 2011

По крайней мере, я разрешил свою проблему, это был конфликт между viewstate (сохранением viewstate в сеансе) и асинхронными запросами ... Это давало новое нет. просматривать состояния при обратной передаче.

Спасибо за ваше время ...

0 голосов
/ 25 марта 2011

Я бы вместо этого использовал jQuery, потому что я думаю, что 100 миллисекунд ОЧЕНЬ малы, поэтому ваш код на стороне сервера может все еще загружаться и выполняться после того, как таймер будет работать более 2 раз или около того.

загрузите свой DOM, напишите простую функцию jQuery для извлечения данных с вашего сервера, заполните их внутри своей страницы и улыбнитесь :))

...