如何将多个表合并为一个,具有相同的模式和列名称

时间:2009-08-07 22:24:44

标签: c# asp.net

我有3个收集数据表,显示在下面

Month: January
ID     NAME       Absent
001    John       3
002    Travis     0

Month: February
ID     NAME       Absent
001    John       18
002    Travis     14

Month: March
ID     NAME       Absent
001    John       10
002    Travis     5

之前,我已经习惯了merge DataTable

dataTable.merge(dataTable2);

结果如下:

ID     NAME       Absent
001    John       3
002    Travis     0
001    John       18
002    Travis     14
001    John       10
002    Travis     5

dataTable.Merge(dataTableTemp);
GridView.DataSource = dataTable;
GridView.DataBind();

但是,我想像这样创建(我们说:自定义GridView):

               Jan      Feb     Mar    Apr
ID    NAME     Absent   Absent  Absent Absent
001   John     3        18      10
002   Travis   0        14      5

如何在每个月之前在表格的右侧添加/合并,所以如果我在下个月添加它,它将出现在表格的右侧...

如何创建:???我可以使用任何功能或工具的方法吗?

感谢您的帮助..

2 个答案:

答案 0 :(得分:2)

试试这个:

        void Merge(DataTable masterDataTable, DataTable[] dataTables, int columnIndex)
        {
            foreach (DataTable dt in dataTables)
            {
                DataColumn newColumn = masterDataTable.Columns.Add(dt.TableName, typeof(int));
                int newColumnIndex = masterDataTable.Columns.IndexOf(newColumn);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    masterDataTable.Rows[i][newColumnIndex] = dt.Rows[i][columnIndex];
                }
            }
        }

这就是你如何使用它:

       Merge( janDataTable, new DataTable[]{ febDataTable, marDataTable, aprDataTable}, 2);

答案 1 :(得分:0)

你需要转动你的桌子。看看这个:

http://weblogs.sqlteam.com/jeffs/articles/5091.aspx