2

大家下午好

这是我的场景:

我在母版页和用户控件中有用户控件,我可能有一个更新面板。我在用户控件中放置了以下代码,该用户控件在部分回发期间维护各种控件样式,即受asp更新面板影响的那些控件。

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

事实上,当一个更新面板完成它的工作时,Fancy Dan 样式就会被保持。

然而,我有一个抱怨——当发生“大”部分回发时,偶尔你会看到默认的通用控件样式重新出现,然后统一启动以重新应用新的花哨样式。

有什么办法可以避免看到令人讨厌的旧的、默认的、乏味的样式?

任何建议都非常感谢。

4

1 回答 1

1

查看使用 PageManagerRequests:MSDN 使用 PageRequestManager

  1. Sys.WebForms.PageLoadingEventArgs 类
  2. Sys.WebForms.PageRequestManager pageLoading 事件

    $(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;
    
    
    
            //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();
        }
    }
    
    }

编辑:我认为您理解问题是在您的 javascript 有机会将元素设置为统一()之前,这些元素已被放置到 DOM 中(并因此被绘制)。这会拦截 UpdatePanel 和 uniform() 的代码,然后再将其插入 DOM

编辑 2好吧,我已经更新了很多,我在那里用我的测试代码测试了它,然后包含了你可能添加的代码。另外,我在 eventArgs._panelsUpdating 中采取了捷径——我真的应该使用 get 和 set 函数,但这有效。

于 2010-11-10T17:20:36.733 回答