我需要做一个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和中继器,但它不起作用,你能帮我找到最好的方法吗?
我必须使用像repeater这样的东西,因为比较表中的列数是不同的。
发布于 2013-01-26 00:45:17
一种可能的解决方案:
给定以下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>发布于 2013-01-26 00:49:25
这不是针对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)https://stackoverflow.com/questions/14525914
复制相似问题