Вызов Javascript-функции после проблемы обратной передачи UpdatePanel - PullRequest
16 голосов
/ 24 марта 2011

У меня в основном в UpdatePanel есть литерал, который генерирует массив javascript на основе метода в моем коде.

У меня нет проблем с загрузкой содержимого при загрузке страницы.Но если я попытаюсь выполнить поиск для обновления литерала массива javascript в моей панели обновления, я обнаружу, что литерал обновляется при обратной передаче после того, как javascript уже запущен.

Вот базовый пример того, что у меня есть:

<script type="text\javascript">
function BindMyFunction(itemList)
{
    //Do something
}
</script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>  
<!-- Literal containing generated JS array -->
    <asp:Literal ID="ProfileJavscriptOutput" runat="server"></asp:Literal> 
    <ul id="person-search">
    <li><asp:TextBox ID="TxtFirstname" runat="server" Text=""></asp:TextBox></li>
    <!-- Update Literal onClick -->
        <li><asp:ImageButton CssClass="searchbtn" ID="ImageButton1" runat="server" OnClick="ImageButton1_Click" /></li>
    </ul>    
    <!-- Some jCarousel rendered -->
</asp:UpdatePanel>

Я просматривал следующие сообщения:

ASP.NET - UpdatePanel иJavaScript

вызов javascript после обратной передачи панели обновления

Но я не могу применить его к своему коду правильно.

Работает нормальнокогда я не использую UpdatePanel.Но это требование, чтобы позиция страницы не перемещалась при выполнении поиска.

Ответы [ 3 ]

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

вы можете добавить следующий код в событие Page_Load:

ScriptManager.RegisterStartupScript(Me.rptGridAlbum, rptGridAlbum.GetType, "scriptname", "somejavascript", True)

Это вызовет JavaScript на вашей странице после обратного вызова AJAX.

* MSDN 1007 *

0 голосов
/ 13 января 2016
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
    prm.add_endRequest(function (sender, e) {
        if (sender._postBackSettings.panelsToUpdate != null) {
            DisplayCurrentTime(); // here your javascript function
        }
    });
};
0 голосов
/ 24 марта 2011

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

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