数据库有产品表如下
名称 大小
A 1
B 2
我知道是用repeater 绑定数据显示
<table>
<tr><td>名称</td><td>大小</td></tr>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>绑定产品名称</td><td>绑定产品大小</td>
</tr></ItemTemplate>
</asp:Repeater>
</table>
可是我现在想让他们属性对比
显示成
名称 A B
大小 1 2
而且必须用<table>来呈现……
请问用什么控件绑定数据可以实现这种效果呢?
听说sql2005,有个行列互换函数,可惜不知道怎么用,请大侠帮忙?
名称 大小
A 1
B 2
我知道是用repeater 绑定数据显示
<table>
<tr><td>名称</td><td>大小</td></tr>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>绑定产品名称</td><td>绑定产品大小</td>
</tr></ItemTemplate>
</asp:Repeater>
</table>
可是我现在想让他们属性对比
显示成
名称 A B
大小 1 2
而且必须用<table>来呈现……
请问用什么控件绑定数据可以实现这种效果呢?
听说sql2005,有个行列互换函数,可惜不知道怎么用,请大侠帮忙?
解决方案 »
- 关于DataList递归 急 高分
- 编写闹钟程序,是使用一个线程轮询所有的提醒时间,还是每个提醒时间使用一个线程好?
- 关于DATASET中数据导入导出数组的问题~~~!在线等待~~
- SQL查询结果输出到DATAGRIDVIEW控件的问题
- C#的代码用混淆器混淆后,发布的时候,还随带混淆器的一些东西吗?
- 各位高手有什么好的解决方法
- 新手跪求大神帮忙,感激不尽
- 如何在c#中实现网页上的所有控件的动态显示?
- 关于抽象类的菜鸟问题,在线等候,一定要帮帮俺GGJJDDMM........
- 引用spatialite库
- C# 操作 Active Directory 报出"登录失败: 未知的用户名或错误密码。"
- 在WinFrom中如何通过Http协议Get、Post向服务器获取数据..
http://topic.csdn.net/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html?33238(总结帖子)
http://topic.csdn.net/u/20090912/14/25d2e1b2-f352-4713-8618-d3433ba27bef.html?99104(经典帖子)
我刚开始学,不太知道,我知道datelist,repeater,可以竖着显示,可是用table,因为有tr,我就不知道怎么办了?
http://topic.csdn.net/u/20090912/14/25d2e1b2-f352-4713-8618-d3433ba27bef.html?99104(经典帖子)
http://blog.csdn.net/Sandy945/archive/2009/04/13/4068760.aspx C# 实现DataTable的行转列
http://blog.csdn.net/sandy945/archive/2010/03/01/5336560.aspxhttp://topic.csdn.net/u/20091021/14/57f04387-7412-4049-9e89-c4add5a5109c.html
datalist简单 可是我的有样式,必须用table~~~
工号, 姓名, 日期, 班次
1, wang, 1, 早班
1, wang, 2, 晚班
2, li, 1, 早班
2, li, 2, 晚班
...
要转换为:
工号 姓名 1 2 3 4 5...31
1 wang 早班 晚班 ...
2 li 早班 晚班 ...// 定义列名
string id = "工号", name = "姓名", date = "日期", shift = "班次";// 添加 ID, Name 列
DataTable table = new DataTable();
table.Columns.Add(id);
table.Columns.Add(name);// 从原表生成可查询的 DataRow[]
IEnumerable<DataRow> rows = srcTable.AsEnumerable();// 分组排序 日期(date) 字段
// Field<int>(date) int 是返回值的类型
var dts =
from p in rows
orderby p.Field<int>(date)
group p by p.Field<int>(date) into g
select g.Key;// 向 table 中添加分组后的字段 dts
table.Columns.AddRange(
dts.Select(dt => new DataColumn()
{
Caption = dt.ToString(),
ColumnName = dt.ToString()
}).ToArray());// 获取分组数据 ID, Name
var infos =
from p in rows
group p by new
{
ID = p.Field<string>(id),
Name = p.Field<string>(name)
} into g
orderby g.Key.ID
select new string[] { g.Key.ID, g.Key.Name };// 汇总数据并插入数据表
foreach (var info in infos)
{
var filters =
from dt in dts
join p in rows on dt equals p.Field<int>(date) into g
select g.Where(x => x.Field<string>(id) == info[0] && x.Field<string>(shift) != null).Count().ToString(); var values = info.Concat(filters);
table.Rows.Add(values.ToArray());
}// 我用的是 gridview// 清除列
gv.Columns.Clear();
foreach (DataColumn col in table.Columns)
{
BoundField column = new BoundField();
column.DataField = col.ColumnName;
column.HeaderText = col.ColumnName;
column.ReadOnly = true;
column.SortExpression = col.ColumnName;
gv.Columns.Add(column);
}gv.DataSource = table;
gv.DataBind();
create table #product ([Name] varchar(20),[Size] varchar(5)) insert into #product select 'A','1'
union all select 'B','2'select * from #productdeclare @sql varchar(8000)
select @sql = isnull(@sql + '],[' , '') + [Name] from #product group by [Name]
set @sql = '[' + @sql + ']'
print @sql
exec ('select * from (select * from #product) a pivot (max([Size]) for [Name] in (' + @sql + ')) b')