Динамическое заполнение данных, такое как комментарии к stackoverflow? - PullRequest
1 голос
/ 04 марта 2011

Я пытаюсь создать систему комментариев так же, как 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 фильтрации по датарову.

Спасибо

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Я предлагаю использовать JSON, возвращенный из веб-служб ASP.NET с 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/

0 голосов
/ 05 марта 2011

Если вы хотите добавить оставшиеся элементы к текущему элементу повторителя, у вас может быть кнопка в конце комментариев, которая присоединена к функции jquery, которая получит остальные комментарии для вас.Затем, как только данные будут получены, ваша функция просто добавит комментарии к списку других комментариев, имитирующих то, что делал ретранслятор, и заменит кнопку «показать все».

Если вы не хотите использовать какой-либо ajaxчтобы сделать это, вам, вероятно, потребуется пересвязать комментарии Repeater с новым набором данных, который не ограничивается только первыми 5 результатами.

РЕДАКТИРОВАТЬ: На основе вашего комментарияи изменения, которые вы отредактировали, я бы пошел с одной таблицей со всеми комментариями и в DataBinding каждого комментария установил бы стиль строки, видимый с глобальным счетчиком.Как только у вас будет более 5, установите стиль для скрытого стиля для каждого элемента.Когда они нажимают кнопку Показать все, просто переключите стиль со скрытого на видимый для остальных комментариев, которые скрыты.Это избавит вас от дублирования данных для первых 5 элементов, которые могут превратиться во множество дополнительных строк, если будет много ответов с комментариями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...