Dude Its Very Simple,
1)simply merge data tables as a single data tables
2)Bind the merged table into Gridview
we have n number of Methods avilable in google to merge datatable
here i just post sample one ...........
public DataTable myJoinMethod(DataTable LeftTable, DataTable RightTable,
String LeftPrimaryColumn, String RightPrimaryColumn)
{
DataSet mydataSet = new DataSet();
mydataSet.Tables.Add(" ");
DataTable myDataTable = mydataSet.Tables[0];
DataColumn[] dcLeftTableColumns = new DataColumn[LeftTable.Columns.Count];
LeftTable.Columns.CopyTo(dcLeftTableColumns, 0);
foreach (DataColumn LeftTableColumn in dcLeftTableColumns)
{
if (!myDataTable.Columns.Contains(LeftTableColumn.ToString()))
myDataTable.Columns.Add(LeftTableColumn.ToString());
}
DataColumn[] dcRightTableColumns = new DataColumn[RightTable.Columns.Count];
RightTable.Columns.CopyTo(dcRightTableColumns, 0);
foreach (DataColumn RightTableColumn in dcRightTableColumns)
{
if (!myDataTable.Columns.Contains(RightTableColumn.ToString()))
{
if (RightTableColumn.ToString() != RightPrimaryColumn)
myDataTable.Columns.Add(RightTableColumn.ToString());
}
}
foreach (DataRow LeftTableDataRows in LeftTable.Rows)
{
myDataTable.ImportRow(LeftTableDataRows);
}
ArrayList var = new ArrayList();
ArrayList LeftTableIDs = new ArrayList();
LeftTableIDs = this.DataSetToArrayList(0, LeftTable);
foreach (DataRow rightTableDataRows in RightTable.Rows)
{
if (LeftTableIDs.Contains(rightTableDataRows[0]))
{
string wherecondition = "[" + myDataTable.Columns[0].ColumnName + "]='"
+ rightTableDataRows[0].ToString() + "'";
DataRow[] dr = myDataTable.Select(wherecondition);
int iIndex = myDataTable.Rows.IndexOf(dr[0]);
foreach (DataColumn dc in RightTable.Columns)
{
if (dc.Ordinal != 0)
myDataTable.Rows[iIndex][dc.ColumnName.ToString().Trim()] =
rightTableDataRows[dc.ColumnName.ToString().Trim()].ToString();
}
}
else
{
int count = myDataTable.Rows.Count;
DataRow row = myDataTable.NewRow();
row[0] = rightTableDataRows[0].ToString();
myDataTable.Rows.Add(row);
foreach (DataColumn dc in RightTable.Columns)
{
if (dc.Ordinal != 0)
myDataTable.Rows[count][dc.ColumnName.ToString().Trim()] =
rightTableDataRows[dc.ColumnName.ToString().Trim()].ToString();
}
}
}
return myDataTable;
}
Steps :
1)Create the empty datatable - ‘dtResult’, which will be filled with the result set.
2)Add Left data table column names to the ‘dtResult’ datatable.
3)Add Right data table column names to the ‘dtResult’ datatable excluding the primary key column of the right data table.
4)Fill left data table data to the ‘dtResult’ looping through each row of the left datatable
5)Primary key values of the left table stored in array list ‘var’ using the ‘DataSetToArrayList’ method
6)Fill the right table data having keys not in the left table.
7)Fill the right table data, with joined rows looping through the columns in each row.