1

SOと同じようにコメントシステムを作成しようとしていますが、最初に投稿の最初の5つのコメントを表示し、目的の返信で[すべてのコメントを表示]をクリックすると残りを表示したいと思います。

これを行うための最良の方法は何ですか?自分のやりたいことをするための良い方法を本当に見つけることができませんでした。私は何かが欠けているに違いありません。

参考までに、コメントデータソースは私のページにネストされたリピーターです。外側のリピーターは返信で、内側のリピーターはコメントです。現在、すべての結果に対してすべてのコメントをバインドしています(10000件の返信がある場合でも)。また、コメントのページングは​​行いたくありません。SOと同じように機能させたいだけです。

何か案は?

編集:今私はコメントのために2つのテーブルを持つことを考えています:

  • データが5行しかないテーブルで、デフォルトで表示されます。これを行うにはフィルタリングが必要です。Linqフィルタリングコードは素晴らしいでしょう!

  • すべての結果を含むテーブル。フィルタリングなし。これは問題ありません。

だからここに私がデータのために持っているものがあります:

DataRowView dv = e.Item.DataItem as DataRowView;
        if (dv != null)
        {
            Repeater commentRepeater = e.Item.FindControl("childRepeater") as Repeater;
            if (commentRepeater != null)
            {
                commentRepeater.DataSource = dv.CreateChildView("myrelation");
                commentRepeater.DataBind();
            }
        }

ご覧のとおり、データセット内のテーブル間にリレーションを作成し、そのデータ行をリピーターにバインドしています。データ行で上位5つのフィルタリングを実行する必要があります。

ありがとうございました

4

2 に答える 2

1

ASP.NET Web サービスから返された JSON を jQuery で使用することをお勧めします。

http://www.mikesdotnetting.com/Article/96/Handling-JSON-Arrays-returned-from-ASP.NET-Web-Services-with-jQuery

http://www.electrictoolbox.com/json-data-jquery-php-mysql/

于 2011-03-04T21:58:00.920 に答える
0

残りのアイテムを現在のリピーター アイテムに追加する場合は、コメントの最後に、残りのコメントをフェッチする jquery 関数に関連付けられたボタンを配置できます。次に、データが受信されると、関数はコメントを他のコメントのリストに追加して、リピーターが行っていたことを模倣し、「すべて表示」ボタンを置き換えます。

これを行うために ajax を使用したくない場合は、おそらくRepeater最初の 5 つの結果だけに限定されない新しいデータ セットでコメントを再バインドする必要があります。

編集:コメントと編集した変更に基づいて、すべてのコメントを含む1つのテーブルを使用しDataBinding、各コメントで行スタイルをグローバルカウンターで表示に設定します。5 つ以上ある場合は、アイテムごとにスタイルを非表示のスタイルに設定します。すべて表示ボタンをクリックすると、非表示になっている残りのコメントのスタイルを非表示から表示に切り替えるだけです。これにより、最初の 5 項目のデータを複製する手間が省けます。コメント付きの回答が多数ある場合、余分な行が多くなる可能性があります。

于 2011-03-04T21:57:02.650 に答える