当前位置:首页 > 将DataGridViewRows转换为DataTable数据

将DataGridViewRows转换为DataTable数据

点击次数:2522  更新日期:2013-03-29
/// summary
/// 将DataGridViewRows转换为DataTable数据
/// /summary
/// param name=ListrowsDataGridView的行集合/param
/// param name=dtSource源数据表/param
/// param name=colum映射关系/param
/// param name=dtDestination目的数据表/param
/// returns返回新的DataTable/returns
public static DataTable Getdatatable(DataGridViewRowCollection Listrows, DataTable dtSource, string[,] colum, DataTable dtDestination)
{
// string[,] colum = { { id1, id2 }, { name1, name2 } }; //colum是源DataGridViewRow到目标DataRow的映射关系
DataTable dtNew = dtSource.Clone();//复制表结构
foreach (DataGridViewRow dgvr in Listrows)
{
DataRow dataRow = (dgvr.DataBoundItem as DataRowView).Row; //转换成数据行DataRow
dtNew.ImportRow(dataRow); //添加DataRow到DataTable
}
string[] copy = new string[colum.Length / 2];
for (int i = 0; i colum.Length / 2; i++)
{
copy[i] = colum[i, 0]; //获取源数据要的列
}
DataTable dtNew2 = dtNew.DefaultView.ToTable(false, copy);//复制源表结构和数据,并只保留copy数据中的列
if (dtDestination != null)
{
for (int j = 0; j dtNew2.Rows.Count; j++)
{
DataRow row = dtDestination.NewRow();
for (int f = 0; f colum.Length / 2; f++)
{
row[colum[f, 1]] = dtNew2.Rows[j][colum[f, 0]]; //将源表中每行的各列数据复制到对应的目的表的行中
}
dtDestination.Rows.Add(row); //添加到目的表
}
}
return dtDestination;
}