根据这些信息,我会看这样的东西:
您有一个预定义的 SourceDataTable,其中一行存在于 2 个部分中:
静态部分
发票 | 日期 | 用户
可以发生 N 次的动态部分。
线号 | 文章 | 数量
这使得以下序列: 静态 | 动态1 | 动态2 | 动态3 | 动态...
在此之后,我们知道如何计算动态行的数量。
var AmountOfNewLines = (SourceDataTable.Columns.Count - 3) / 3;
//the minus comes from the Static data
//divide by 3 because every Dynamic part exists out of 3 columns
基于此,您知道需要创建多少行,并且您知道您的格式如何:
//Creation of the DestinationTable datatable
var DestinationTable = new DataTable("Destination");
DestinationTable.Columns.Add("Invoice", typeof(String)); //Correct Type?
DestinationTable.Columns.Add("Date", typeof(String));
DestinationTable.Columns.Add("User", typeof(String));
DestinationTable.Columns.Add("LineNo", typeof(String));
DestinationTable.Columns.Add("Article", typeof(String));
DestinationTable.Columns.Add("Qty", typeof(String));
for(int i = 0; i < AmountOfNewLines - 1; i++)
{
//Create a new row
//Invoice|Date |User |LineNo|Article|Qty
foreach(DataRow d in SourceDataTable)
{
//Using the foreach makes the datarow more easier to approach
//The Number inside the brackets explains which column is being approached.
DestinationTable.Rows.Add(d[0], d[1], d[2], d[3+(3*i)], d[4+(3*i)], d[5+(3*i)])
}
}