ListView сделает это довольно легко, так как имеет шаблоны группировки. Повторитель для категорий с вложенными GridView для элементов также будет работать.
Если вы настроили GridView, это займет некоторое время. Вы можете либо изменить данные, чтобы поместить их в классифицированные строки, создать подкласс GridView для добавления новых строк, добавить пользовательский элемент управления для вставки разметки в HTML-код GridView (я использую тот, который закрывает текущую строку и добавляет новую строку с соединением), или использовать JQuery на клиенте.
Создание подклассов - это «правильный» способ - и его можно использовать повторно - но это немного работы. Изменить данные довольно просто, но это довольно уродливо и зависит от того, как вы привязываетесь к данным. JQuery может быть самым простым маршрутом здесь. Установите категорию в 1-м столбце, создайте новые строки при изменении категории, а затем скройте 1-й столбец. Это также хорошо понижает, так как noscript будет категория в первом столбце. Это не проверено, но оно должно приблизить вас:
var lastCategory = '';
$('TR > TD:first').each(function() {
var thisCategory = $(this).text().trim();
if (thisCategory != lastCategory) {
// new category - insert subheading row
var thisRow = $(this).parent();
var colspan = $('> TD', thisRow).length;
thisRow.insertBefore(
'<tr class="subheading">' +
'<td colspan="' + colspan.toString() + '">' +
thisCategory +
'</td>' +
'</tr>'
);
lastCategory = thisCategory;
}
}).hide(); // hide 1st columns