Я должен отобразить набор данных в таблице на веб-сайте как часть отчета. Проблема существует набор ее, и она должна быть визуально сгруппирована.
Каждая часть данных является "использованием" объекта и имеет дату (представляющий, когда это использовалось), число хранилища (соответствующий хранилищу, которое использовало его), название товара (объект, который использовался), и количество (количество объекта, который использовался).
Пользователь будет иметь опцию или сгруппироваться объектом, затем сохранит или хранилищем, затем объект. Негласно, я сгруппируюсь по дате, также.
Отчет должен суммировать количества оба объектом/хранилищем (в зависимости от группы - опцией) и по дате и составить подсуммы.
Вещь, я не уверен, как отобразить ее. Лучшее, которое я могу придумать прямо сейчас, является чем-то как
++------+------+------+------++-----+
|| date | date | date | date || sum |
+-----------+--------------||======+======+======+======||=====+---+
| Item Name | Store Number || 1 | 2 | 3 | 4 || 10 | ^ |
| +--------------||------+------+------+------||-----|---|
| | Store Number || 5 | 6 | 7 | 8 || 26 | # |
| +--------------||------+------+------+------||-----| # |
| | Store Number || 9 | 10 | 11 | 12 || 42 | # |
| +--------------||------+------+------+------||-----| |
| Total || 15 | 18 | 21 | 24 || 78 | |
+==========================++===========================++=====| |
| Item Name | Store Number || 1 | 2 | 3 | 4 || 10 | |
| +--------------||------+------+------+------||-----| |
| | Store Number || 5 | 6 | 7 | 8 || 26 | |
| +--------------||------+------+------+------||-----| |
| | Store Number || 9 | 10 | 11 | 12 || 42 | |
| +--------------||------+------+------+------||-----|---|
| Total || 15 | 18 | 21 | 24 || 78 | v |
+==========================++===========================++=====+---+
| < | #### | > |
+---------------------------+
Для группировки объектом затем хранят или переключают "Название товара" с "Числом Хранилища" для группы хранилищем затем объект.
Столбцы даты (намного больше, чем всего четыре) прокрутили бы слева/справа, и объекты/хранилища прокрутят/вниз, для хранения таблицы на одной странице. Другими словами, заголовки даты замораживаются на месте вертикально, и название товара, хранят числа, и суммы замораживаются горизонтально.
Проблема была бы с реализацией: как, черт возьми, я представляю это в HTML!?
Лучший вопрос: существует ли лучший путь?
Каков Ваш совет относительно решения этой проблемы? (Предпочтительно изящно и легко)
Я думаю, что лучшим решением будет сгруппировать данные по элементам, как на следующем изображении. http://img51.imageshack.us/img51/6434/layoutsv.png
HTML будет примерно таким:
<div style="overflow: auto; width: 100%; height: 500px">
<h1>Item 1</h1>
<table>
<tr>
<th></th>
<th>Date</th>
...
...
</tr>
<tr>
<th>Store #</th>
<td>1</td>
...
...
</tr>
...
...
</table>
<h1>Item 2</h1>
...
...
</div>
Для фиксированного столбца вы должны посмотреть здесь: Таблица HTML с фиксированными заголовками и фиксированным столбцом?
Это выполнимо, но я бы сам не стал делать это непосредственно в html. Насколько сложным будет его создать вначале, настолько же сложным будет изменить его позже, когда изменится бизнес-потребность.
Если вы все-таки попробуете это сделать, я бы рекомендовал изучить концепции стекированных и встроенных таблиц, прокручивающихся div'ов и div'ов с фиксированным положением/перекрытием. Даже в этом случае будет не очень весело пытаться заставить что-то настолько сложное работать более чем в одном типе браузера.
Я бы рекомендовал обратиться к инструментам более высокого уровня. В ASP.NET есть несколько хороших элементов управления для этого, если вы все же хотите использовать несколько ручной подход. В них есть встроенные элементы управления, которые можно изменять в коде, или вы можете кодировать (в отличие от разметки) таблицы и использовать модель событий для запросов/перезапросов к базе данных.
Еще лучше, если для базовых нужд вы обратитесь к инструментам создания отчетов, таким как SSRS (есть много других), или даже MS Access.