Выделение эффекта jquery не работает на панели обновления asp.net - PullRequest
2 голосов
/ 24 февраля 2011

У меня есть две панели обновления, как показано ниже (когда нажата кнопка ссылки, я пытаюсь выделить div)

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>     
              <asp:Linkbutton id="btnChange" runat="server" OnCommand="LinkButton_Command"/>
              <asp:Linkbutton id="btnChange2" runat="server" OnCommand="LinkButton_Command"/>
        </ContentTemplate>        
</asp:UpdatePanel> 

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>    
             <div id="shdr">Hello there!</div> 
        </ContentTemplate>        
</asp:UpdatePanel>

Я перезаписываю OnLoadComplete и регистрирую этот скрипт на странице следующим образом

ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "divHigh", "$('#shdr').effect('highlight', {}, 3000);", True)

Это подсвечивает div после постбэка, но значение тайм-аута не работает, оно продолжает показывать выделенный цвет и не изменяется обратно.

Что может быть причиной того, что это не работает?

Ответы [ 3 ]

2 голосов
/ 24 февраля 2011

Если вы используете UpdatePanel - то есть Script Manager

$(function () {
 //Code that runs before update panel is fired.

        //Listen for update panel
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        //Re-initialize jquery after an auto post back.
        function EndRequestHandler(sender, args) {
            //Do work after update panel fires.
        } 
    });

Так что, по сути, у вас будет свой код jQuery, а затем тот же код внутри функции EndRequestHandler, если вы хотите, чтобы он мог запускаться после публикации назад.

0 голосов
/ 24 февраля 2011

Если вы хотите, чтобы какой-либо JavaScript запускался при каждом обновлении панели, вы можете добавить следующий скрипт на свою страницу.Это зарегистрирует функцию javascript для запуска всякий раз, когда обновляется UpdatePanel.

<script type="text/javascript">
    function NameOfJavascriptFunctionYouWantToRunHere()
    {
        $('#shdr').effect('highlight', {}, 3000);
    };

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_pageLoaded(NameOfJavascriptFunctionYouWantToRunHere);
</script>
0 голосов
/ 24 февраля 2011

Вы можете использовать метод pageLoad () ASP.Net Ajax для вызова вашей логики выделения следующим образом:

<script type="text/javascript">
function pageLoad(){
    $('#shdr').effect('highlight', {}, 3000);
};
</script>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...