上面的就用html静态的table,下面的用DataList或DataGrid都可以,注意对齐就是了。

解决方案 »

  1.   

    前两个不清楚,用Repeater可以啊,随意写就是了
    <HeadTemplate>
    <table>...</table><table>
    </HeadTemplate>
    <ItemTemplate>
    <tr><td></td></tr>
    ...
    </ItemTemplate>
    <FootTemplate>
    </table>
    </FootTemplate>
      

  2.   

    http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=0BF1E82C-A30A-4B5B-85B2-8DB339A41D37
      

  3.   

    如果在模板列里加table,边框是个问题,不可能就显示一条底线啊,如果用楼上的怎么保证datagrid动态增加列的时候仍然对齐?
      

  4.   

    创建跨多列、多行表头的DataGrid
      

  5.   

    对呀,上面用TABLE,把datagrid或者datalist或者repeater放在TABLE中
      

  6.   

    创建跨多列、多行表头的DataGrid
    ------------------------------------------?具体怎么做,谢谢!!!
      

  7.   

    代码片断
    1、DataGrid显示双层表头
    http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=B3F3462D-DC34-41CE-9FEE-6965B2A3D1AD
    假设你的DataGrid有三列,现在想将前两列作为"大类1",第三列作为"大类2",现在,你可以在ItemDataBound事件中加入下面的代码:
    if (e.Item.ItemType == ListItemType.Header)
    {
    e.Item.Cells[0].ColumnSpan = 2;
    e.Item.Cells[0].Text = "大类1</td><td>大类2</td></tr><tr><td>" + e.Item.Cells[0].Text;
    }
    用这个方法可以为任意添加新行。
     C#
    if (e.Item.ItemType == ListItemType.Header)
    {
    DataGridItem dgi = new DataGridItem(0,-1,ListItemType.Header);
    DataGridItem dgi1= new DataGridItem(0,-1,ListItemType.Header);
    Table tb = new Table();
    tb = (Table)DataGrid1.Controls[0];
    tb.Rows.AddAt(0,dgi);
    tb.Rows.AddAt(1,dgi1);
    TableCell tc = new TableCell();
    TableCell tc1 = new TableCell();
    TableCell tc2 = new TableCell();
    TableCell tc22 = new TableCell();
    tc.Text = "ddd";
    tc.ColumnSpan = 1;
    dgi.Cells.Add(tc);
    tc1.Text = "ddd2";
    tc1.ColumnSpan = 1;
    dgi.Cells.Add(tc1);
    tc2.Text = "ddd";
    tc2.ColumnSpan = 1;
    dgi1.Cells.Add(tc2);
    tc22.Text = "ddd2";
    tc22.ColumnSpan = 1;
    dgi1.Cells.Add(tc22);

    }