Как сделать таблицу сравнения html с помощью повторителя asp (вращение данных)

Мне нужно сделать таблицу сравнения в формате HTML, проблема в том, что элементы в базе данных поступают в виде столбцов, но в сравнительной таблице это должны быть строки!

пример

Данные в базе данных выглядят следующим образом:

ID Name Color Weight ------------------------------- 1 Ball Red 10 2 Table Black 50 3 Chair Green 30 

И это должно выглядеть следующим образом в сравнительной таблице

 ID 1 2 3 Name Ball Table Chair Color Red Black Green Weight 10 50 30 

Я использую ASP.NET с ретранслятором, но он не работает. Не могли бы вы помочь мне найти лучший способ сделать это.

Я должен использовать что-то вроде повторителя, потому что количество столбцов в таблице сравнения меняется.

Возможное решение:

Учитывая следующий DataTable как источник данных:

 protected DataTable Data { get { if (ViewState["Data"] == null) { DataTable table = new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name"); table.Columns.Add("Color"); table.Columns.Add("Weight", typeof(int)); table.Rows.Add(1, "Ball", "Red", 10); table.Rows.Add(2, "Table", "Black", 50); table.Rows.Add(3, "Chair", "Green", 30); ViewState["Data"] = table; } return (DataTable)ViewState["Data"]; } } 

И некоторый код ASP для циклирования и построения таблицы:

 <table> <% for (int i = 0; i < Data.Columns.Count; i++) { %> <tr> <td><%= Data.Columns[i].ColumnName %></td> <% for (int j = 0; j < Data.Rows.Count; j++) { %> <td><%= Data.Rows[j][i] %></td> <% } %> </tr> <% } %> </table> 

Так что это не для ASP.NET, но вы можете его преобразовать. Это код, который я использую для создания динамических сводных таблиц в SQL Server. Это позволяет вам делать то, что вы хотите, не зная, сколько будет столбцов. Дело в сводных таблицах состоит в том, что они требуют расчета, поэтому вам придется сделать это, чтобы заставить его работать. Надеюсь это поможет.

 DECLARE @columns varchar(500) Select @columns = STUFF(( select distinct '],[' + cast(Name as varchar) from table_name as t1 order by '],[' + cast(Name as varchar) for XML path('') ), 1, 2, '') + ']' DECLARE @query varchar(max) SET @query = 'select * from table_name pivot ( count(Name) for Name in (' +@columns+ ') )as pvt' execute(@query) - DECLARE @columns varchar(500) Select @columns = STUFF(( select distinct '],[' + cast(Name as varchar) from table_name as t1 order by '],[' + cast(Name as varchar) for XML path('') ), 1, 2, '') + ']' DECLARE @query varchar(max) SET @query = 'select * from table_name pivot ( count(Name) for Name in (' +@columns+ ') )as pvt' execute(@query)