数据库有产品表如下
 名称 大小
 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,有个行列互换函数,可惜不知道怎么用,请大侠帮忙?

解决方案 »

  1.   

    行列转换:
    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(经典帖子)
      

  2.   

    http://topic.csdn.net/u/20101222/15/23bf7da6-1ddf-41ba-bbf8-f627a182e605.html?19988
      

  3.   

    http://topic.csdn.net/u/20100412/22/fec647ea-73d0-480b-92e9-8af61ef3c978.html
      

  4.   

    怎么转,用sql?还是控件
    我刚开始学,不太知道,我知道datelist,repeater,可以竖着显示,可是用table,因为有tr,我就不知道怎么办了?
      

  5.   

    sorry 帖子未失效  是我帖的错误....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(经典帖子)
      

  6.   

    DataList 实现 行转列
    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
      

  7.   

    通常这种方式,我都是在前台放个Label,后台先将数据读到DataSet或DataView里面,然后用个双循环,拼一个Table的字符串出来,再将值附给Label.
      

  8.   


    datalist简单 可是我的有样式,必须用table~~~
      

  9.   

    由于我当时用的是 sql2000,不支持 pivot 查询,所以只能在程序里写了源数据视图:
    工号, 姓名, 日期, 班次
    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();
      

  10.   


    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')