Javascript равномерный постбэк - PullRequest
2 голосов
/ 10 ноября 2010

Добрый день всем

Вот мой сценарий:

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

function pageLoad(sender, args) {
        if (args.get_isPartialLoad()) {
            $("select, span, input").uniform();

Действительно, когда панель обновления делает свое дело,стиль Fancy Dan поддерживается.

Однако у меня есть один недостаток - когда происходит «большая» частичная обратная передача, иногда вы увидите, как по умолчанию кратко появляется универсальный стиль элемента управления, а затем равномерно включается, чтобы повторно применитьновые причудливые стили.

Можно ли как-нибудь избежать нежелательных старых стандартных стилей по умолчанию?

Любые предложения приветствуются.

1 Ответ

1 голос
/ 10 ноября 2010

Проверьте работу с PageManagerRequests: MSDN Работа с PageRequestManager

  1. Sys.WebForms.PageLoadingEventArgs Класс
  2. Sys.WebForms.PageRequestManager pageLoading Event

    $(function() {
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(beautify);
    });
    
    
    function beautify(sender, eventArgs) {
        // If we have event args
        if (eventArgs != null) {
            // for each panel that is being updated, update the html by adding color red
            // to select, span, input elements
            // must remember to call .html() to put html back into the panelsUpdating[i], otherwise it puts in the jQuery Object
            for (var i = 0; i < eventArgs.get_panelsUpdating().length; i++) {
                //My test code
                //var content = eventArgs._panelsUpdating[i].outerHTML;
                //var jContent = $(content);
                //$("input", jContent).css("color", "red");
                //jContent = $('<div>').append(jContent)
                //var jContentToContent = jContent.html();
                //alert(jContentToContent);
                //eventArgs._panelsUpdating[i].outerHTML = jContentToContent;
    
    
    <pre><code>        //Cleaned up
            var jContent = $(eventArgs._panelsUpdating[i].outerHTML);
            $("select, span, input", jContent).uniform();
            jContent = $('&lt;div&gt;').append(jContent);
            eventArgs._panelsUpdating[i].outerHTML = jContent.html();
        }
    }
    
    }

Редактировать: Я думаю, вы поняли, что проблема былаэлементы были помещены в DOM (и, следовательно, нарисованы), прежде чем ваш javascript смог сделать их единообразными ().Он перехватывает UpdatePanel и кодiform () перед его вставкой в ​​DOM

Edit 2 Хорошо, я обновил его кучу, я проверил это с помощью своего тестового кодатут же включен код, который вы, вероятно, добавите.Кроме того, я взял короткий путь в eventArgs._panelsUpdating - я действительно должен использовать функции get и set, но это работает.

...