Написание триггера кода для панели обновления.C # - ASP.NET - PullRequest
1 голос
/ 29 мая 2011

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

Итак, я хочу написать метод, который вернет true или false, если база данных обновлена. Метод должен выполняться через определенные интервалы времени. Если база данных была обновлена, она вернет true, и это должно вызвать обновление UpdatePanel.

Я знаю, что вы можете добавлять триггеры через элементы управления. Но возможно ли это сделать через код? Идея состоит в том, что если пользователь останется на странице после запуска действия, он увидит результат, когда метод вернет true. Если пользователь покидает страницу, он, конечно, ничего не видит.

Если это не то право использовать это, скажите, пожалуйста.

Любой комментарий будет оценен! С уважением, Floris

Ответы [ 2 ]

5 голосов
/ 29 мая 2011

Я предлагаю вам использовать asp: Timer

, вы можете разместить этот таймер внутри или снаружи панели обновлений.если вы поместите его в панель обновления, вам не придется самостоятельно обрабатывать триггер.каждый пост обратно в upatepanel станет Async.но если вы поставите его в стороне, вы должны назначить триггер.

вот примеры кодов для вашего aspx:

     <asp:UpdatePanel runat="server" ID="UPanel1">
        <ContentTemplate>
            <asp:Label ID="MessageLabel" runat="server" ForeColor="Red" Font-Size="X-Large" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
    </asp:UpdatePanel>
    <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Clicked" Interval="1000" /> 

, в то время как его легче поместить в панель обновлений:

<asp:UpdatePanel runat="server" ID="UPanel1">
    <ContentTemplate>
        <asp:Label ID="MessageLabel" runat="server" ForeColor="Red" Font-Size="X-Large" />
         <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Clicked" Interval="1000" />
    </ContentTemplate>
</asp:UpdatePanel>

теперь на стороне c #, вы должны написать метод обработчика событий, подобный этому:

        private static int counter = 0;
        protected void Timer1_Clicked(object sender, EventArgs e)
        {
            //DO YOUR WORK WITH DATABASE HERE INSTEAD OF THIS CODE

            if (++counter < 5)
                return;

            MessageLabel.Text = "Tadaaaaaah";
        }

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

0 голосов
/ 30 мая 2011

вы можете поставить галочку для того, обновляется ли значение в базе данных или нет, а затем, если обновлено, вы должны поместить код ниже, если раздел

если (условие) {

//Creates a new async trigger
    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();

    //Sets the control that will trigger a post-back on the UpdatePanel
    trigger.ControlID = "lnkbtncommit";

    //Sets the event name of the control
    trigger.EventName = "Click";

    //Adds the trigger to the UpdatePanels' triggers collection
    pnlUpdate.Triggers.Add(trigger);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...