数据 Table 副本未在 GridView 中正确显示

Data Table Copy not showing properly in GridView

我有一个存储过程,它实际上连接了 2 列和 returns 一个 DataTable。 如下:

create procedure [dbo].[spEnqIDFyYear]
as
begin
select CONVERT(nvarchar(50),enq_id)+'/'+CONVERT(nvarchar(50),YEAR(fy_year)) as EnqIDFyYear from Sample.dbo.enquiry_details
end
GO

输出结果如下:

EnqIDFyYear
1/2015
2/2014

我还有一个程序,输出如下:

profile_name
ProfileA
ProfileB

我将这两个过程绑定到 2 DataTables,将这 2 个 DataTables 合并到第三个并将生成的 DataTable 绑定到 gridview.

但是 gridview 显示不正确。显示如下:

行应该相互对齐。如何实现?

后面代码如下:

protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt1 = PopulateDashBoardGrid1();
            DataTable dt2 = PopulateDashBoardGrid2();
            DataTable dt3 = new DataTable();
            dt3 = dt1.Copy();
            dt3.Merge(dt2);
            GridView1.DataSource = dt3;
            GridView1.DataBind();
        }

        //Populate the main DashBoard Grid
        public DataTable PopulateDashBoardGrid1()
        {
            using (SqlConnection con = new SqlConnection(cs))
            {
                SqlDataAdapter da = new SqlDataAdapter("spEnqIDFyYear", con);
                DataTable dt = new DataTable();
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.Fill(dt);
                return dt;
            }

        }

        public DataTable PopulateDashBoardGrid2()
        {
            using (SqlConnection con = new SqlConnection(cs))
            {
                SqlDataAdapter da = new SqlDataAdapter("spClientProfileName", con);
                DataTable dt = new DataTable();
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.Fill(dt);
                return dt;
            }

        }

请专家帮忙

问候 阿努拉格

您会得到那种输出,因为如果两个数据表的列不同,Merge 会以这种方式工作。所以你需要写一些自定义代码。

这是我的:-

static DataTable MergeDataTables(DataTable dt1, DataTable dt2)
{
     DataTable dt3 = dt1.Copy();
     foreach (DataColumn dc in dt2.Columns)
     {
         dt3.Columns.Add(dc.ColumnName).DataType = dc.DataType;
     }

     for (int i = 0; i < dt3.Rows.Count; i++)
     {
         foreach (DataColumn dc in dt2.Columns)
         {
             string col = dc.ColumnName;
             dt3.Rows[i][col] = dt2.Rows[i][col];
         }
     }
     return dt3;
}

您可以调用此方法合并两个数据表。