1

だから私はこの UpdatePanel を持っています。その中には、サムネイルの気の利いた小さな jQuery スクロール ギャラリーがあり、サーバーから完全な画像の URL を取得するためにポスト バックした後、コンテナー内の完全な画像を表示します。スクロール ギャラリーの各サムネイルは、onCommand イベントを持つ imageButton です。

何が起こっているかというと、サムネイルがクリックされるとサーバーにポストバックされ、完全な画像コンテナが変更されます。これは更新パネルで発生しているため、JavaScript の「関数 pageLoad(){}」を使用して、部分的なポストバック後に jQuery を再適用しています。それはうまくいきます!ポストバックのたびに、jQuery ビジュアルが失われることはありません。

問題は、ページを更新する前に 1 つの投稿しか元に戻せないことです。最初のポストバックの後、ビューが更新され、pageLoad JS が起動して jQuery が期待どおりに再初期化されるようです。次にサムネイルをクリックしてフル ビューを表示すると、サーバー上で onCommand イベントが実行されるのを見ることができますが、ビューには何も起こりません。完全な画像の変更、pageLoad() JS の起動はありません。何もない。ポストバックがラウンドトリップを行わず、サーバーで処理された後にデータをクライアントに送り返すようなものです。

それだけでなく、pageLoad() JS の影響を受ける jQuery 要素が含まれているかどうかに関係なく、他の更新パネルでも同じ効果が発生します。最初のポストバックはパネルを正常に更新しますが、その後のポストバックは何もしていないように見えます。

問題は pageLoad() JS にあると思いますが、何が欠けているのかわかりません。

これは、完全または部分的なポストバックのたびに実行する必要があり、私の悲しみを引き起こしているように見えるJS メソッドです。それは私の<頭>の中にあります。

<script type="text/javascript"> 
  function pageLoad(){   
    $("div.scrollable1").unbind();
    $("div.scrollable").unbind();
    // initialize small scrollable.
    $("div.scrollable1").scrollable({size: 1,clickable: false});
    // initialize scrollable    
    $("div.scrollable").scrollable({size: 1,clickable: false}).mousewheel().find("a[rel]").overlay(); 
  }
</script>
4

1 に答える 1

2

まず、2 つの異なる JavaScript ライブラリを使用しないようにアドバイスしたいと思います。多くの場合、(問題からわかるように) 解決が非常に困難な問題が発生します。

しかし、これを試すことができます:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
function endRequest() {
    //Set your jquery stuff here.
}

これはうまくいくと思います。このコードは、再ロードされないように、更新パネルの外にある必要があります。

于 2010-03-04T17:41:04.363 に答える