

dtDataSource = dtDtl.Clone();
for (int i = 2; i < dtDtl2.Columns.Count; i++)
{
dtDataSource.Columns.Add(dtDtl2.Columns[i].ColumnName);
}
object[] obj = new object[dtDataSource.Columns.Count];
for (int i = 0; i < dtDtl.Rows.Count; i++)
{
dtDtl.Rows[i].ItemArray.CopyTo(obj, 0);
dtDataSource.Rows.Add(obj);
}
if (dtDtl.Rows.Count >= dtDtl2.Rows.Count)
{
for (int i = 0; i < dtDtl2.Rows.Count; i++)
{
for (int j = 2; j < dtDtl2.Columns.Count; j++)
{
dtDataSource.Rows[i][j + dtDtl.Columns.Count-2] = dtDtl2.Rows[i][j].ToString();
}
}
}
else
{
DataRow drDataSource;
for (int i = 0; i < dtDtl2.Rows.Count - dtDtl.Rows.Count; i++)
{
drDataSource = dtDataSource.NewRow();
dtDataSource.Rows.Add(drDataSource);
}
for (int i = 0; i < dtDtl2.Rows.Count; i++)
{
for (int j = 2; j < dtDtl2.Columns.Count; j++)
{
dtDataSource.Rows[i][j + dtDtl.Columns.Count-2] = dtDtl2.Rows[i][j].ToString();
}
}
}