Как Сортировать Таблицу Данных как Таблица Случаев FogBugz - PullRequest
6 голосов
/ 23 января 2009

Кто-нибудь когда-нибудь видел, как fogbugz сортирует свои таблицы? Когда вы нажимаете, чтобы отсортировать столбец, они фактически разбивают таблицу на множество небольших таблиц, в которых есть каждая категория информации.

Хотите знать, если кто-нибудь знает, как они это делают?

Хотите реализовать эту функцию.

Если вы посмотрите страницу дел и разберетесь, то поймете, что я имею в виду.

Любая помощь будет УДИВИТЕЛЬНОЙ!

Все еще не понял этого.

РЕДАКТИРОВАТЬ: @Peter, я не хочу отправлять и воссоздавать таблицу каждый раз, когда заголовок заголовка нажимается для сортировки. Я также хочу знать, является ли их общее решение для этого. Если я нажму на заголовок для сортировки посредством javascript, он разделит «одну» таблицу на множество, и я хочу знать, является ли их какое-либо общее решение для этого, потому что это просто НАМНОГО лучший способ просмотра отсортированной таблицы.

РЕДАКТИРОВАТЬ: Мне нужен сортировщик javascript, но если вы посмотрите прямо на реализацию fogbugz, он даст другой результат ...

Ответы [ 5 ]

8 голосов
/ 13 февраля 2009

Да, Рич понял (я давно закодировал эту функцию в FogBugz).

Если вам нужно сделать это на клиенте, у вас нет выбора, кроме как сортировать данные, выполнять итерацию по ним, генерируя строку таблицы за строкой таблицы, и каждый раз, когда вы нажимаете новое значение сортировки, вы создаете новую thead с соответствующими информация.

Если честно, это было бы довольно крутой модификацией этого плагина jQuery: http://tablesorter.com/docs/, и вы сможете использовать лот их работы. Если вы собираетесь потратить время и создать общее решение, оно может сделать его доступным для сообщества.

2 голосов
/ 10 февраля 2009

Не зная, как конкретно Fog Creek выполняет это, я бы сделал вывод для заголовка таблицы, а затем перебрал бы список, выводя нижний колонтитул и новый заголовок каждый раз, когда значение группы менялось.

1 голос
/ 23 января 2009

Не уверен, какой ответ вы ожидаете. SQL-запрос для этого будет просто использовать порядок для выбранного столбца, и пользовательский интерфейс будет запускать новую таблицу каждый раз, когда это значение изменяется.

Вот скриншот FogBugz с этой сортировкой, после нажатия на столбец Приоритет.

http://img297.imageshack.us/img297/6974/76755363ee3.png

Конечно, начинать новую таблицу не имеет смысла для каждого столбца (заголовок, регистр №).


Редактировать: Если я правильно понимаю, вы ищете способ сделать это в браузере без загрузки новой страницы. Если это так, я бы предложил, по крайней мере, некоторую поддержку на стороне сервера, которая бы возвращала ваши данные в правильном порядке и правильно структурировалась для подтаблиц (в xml / json / независимо от того, что вы используете). Ваш javascript будет использовать эти данные для воссоздания таблиц. Я уверен, что другие с большим опытом работы с веб-интерфейсом предоставят вам лучшие ответы.

0 голосов
/ 13 февраля 2009

Я не знаю, уместно ли это, но мы сохраняем результаты запроса во временной таблице в SQL, а затем ссылаемся на current-row-less-one, чтобы увидеть, изменилась ли категория, и указать это в результат.

В некоторых случаях мы «указываем» это столбцом, содержащим

<tr><td colspan=999>Category Heading</td></tr>

так, чтобы веб-страница могла просто «вставить» то, что в таблицу, которую она строит.

SELECT Col1, Col2, ...,
       [CATEGORY] = CASE WHEN T1.CategoryCol <> COALESCE(T2.CategoryCol, '')
           THEN '<tr><td colspan=999>' + T1.CategoryCol + '</td></tr>'
           ELSE ''
           END
FROM #MyTempTable AS T1
     LEFT OUTER JOIN #MyTempTable AS T2
         ON T2.ID = T1.ID - 1
0 голосов
/ 04 февраля 2009

Я использовал скрипт Сортируемые таблицы из Kryogenix с некоторыми хорошими результатами.

...