2

サーバー側にバインドする Repeater コントロールがあります。一連の div を繰り返しますが、問題なく実行されます。リピーターを並べ替えるために使用するいくつかのボタン(最新、最高ランク、ランダム)があり、これは正常に機能します。

ページのポストバックがなく、ユーザーがページ上の自分の場所を失うことがないように、Ajax/jQuery を使用してボタンで div を並べ替えることで、ユーザー エクスペリエンスを向上させたいと考えています。

jQuery を使用してこのようなサーバー側コードにアクセスする方法や、Ajax を使用してサーバー側コントロールを再バインドする方法はありますか?

ありがとう... 詳細をリストする必要がある場合は、お知らせください。

編集私は UpdatePanels を認識していますが、必要がなければ使用しないことをお勧めします。

4

4 に答える 4

6

比較的簡単です。

  1. リピーターを別のカスタム コントロール、たとえば MyControl に移動します。ページのリピーターは uc1:MyControl になります。

  2. MyControl を div にラップします。

    <div id="mydiv">
      <uc1:MyControl ID="MyControl1" runat="server" />
    </div>
    
  3. MyControl のみを含む新しいページ pgMyControl.aspx を作成します。
  4. メイン ページで、jQuery ハンドラーを並べ替えリンクに追加します。loadメソッドを使用して、div コンテンツを動的に置き換えます。

    $('#link_sort_random').click(function()
    {
      $("#mydiv").load("pgMyControl.aspx&sort=random");
    }
    
  5. 順序を変更するには、MyControl 内のデータソースで QueryStringParameter を使用します。または、コード ビハインド ファイルで Request.QueryString を使用します。
于 2009-06-11T23:48:48.420 に答える
0

updatePanel または jquery Ajax ポストバックを使用することは、本質的に同じことです。どちらもコードに新しいクエリをフェッチするように要求し、コントロールがそれ自体をレンダリングするようにし、HTML を部分的なページ レンダリングとしてクライアントにフィードバックし、同じ DOM の場所にある古いコンテンツの代わりにコンテンツを挿入します。

JQuery と ASP.NET をこの方法で相互に通信させるのは、Web コントロールの性質と、いつレンダリングするかを決定するライフサイクルにより、かなり困難です。updatePanel は、これらすべてを呼び出し、適切なビューステートを維持し、結果を正しい場所に返す方法を知っています。

この場合、自分自身をこれ以上難しくしないでください。特別な理由がない限り、updatePanel を使用してください。

編集:更新パネルで JQuery の問題が発生している場合は、おそらく新しい DOM ノードが作成されていることが原因です。JQuery には、これを処理するライブ イベントがあります。ドキュメントの準備が整った後でも、新しい DOM 要素が作成されたときにそれを認識し、それらをセレクターと照合します。

于 2009-06-11T21:23:36.053 に答える
0

OT かもしれませんが、従来のサーバー コントロールの代わりに XSLT 変換を使用して、クライアント コントロールとサーバー コントロールをバインドする方法を変更することを検討できます。ここで例を見つけることができます(申し訳ありませんが、イタリア語です...)。

于 2009-06-13T00:03:17.630 に答える