2

みなさん、こんにちは。

これが私のシナリオです:

マスターページ内にユーザーコントロールがあり、ユーザーコントロール内に更新パネルがある場合があります。部分的なポストバック中にさまざまなコントロールスタイルを維持するユーザーコントロール内に配置する次のコードがあります。つまり、asp更新パネルの影響を受けるコントロールです。

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

確かに、更新パネルがそのことを行うとき、ファンシーダンのスタイリングは維持されます。

ただし、私には1つの不満があります。「大きな」部分的なポストバックが発生すると、デフォルトの汎用コントロールスタイルが簡単に再表示され、ユニフォームが新しいファンシースタイルを再適用することがあります。

厄介な古い、デフォルトの、当たり障りのないスタイリングを見ないようにする方法はありますか?

どんな提案でも大歓迎です。

4

1 に答える 1

1

PageManagerRequestsの操作を確認してください:MSDNPageRequestManagerの操作

  1. Sys.WebForms.PageLoadingEventArgsクラス
  2. Sys.WebForms.PageRequestManagerpageLoadingイベント

    $(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がそれらをuniform()にする前に、要素がDOMに配置されていた(したがってペイントされていた)ことであると理解したと思います。これは、DOMに挿入される前にUpdatePanelとuniform()のコードをインターセプトします

編集2さて、私はそれをたくさん更新しました、私はそこで私のテストコードでこれをテストし、次にあなたが追加する可能性のあるコードを含めました。また、eventArgs._panelsUpdatingでショートカットを使用しました。実際には、get関数とset関数を使用する必要がありますが、これは機能します。

于 2010-11-10T17:20:36.733 に答える