- /// 将DataGridViewRows转换为DataTable数据
- /// </summary>
- /// <param name="Listrows">DataGridView的行集合</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 dataRow = (dgvr.DataBoundItem as DataRowView).Row;
- 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]; //获取源数据要的列
- }
- //复制源表结构和数据,并只保留copy数据中的列
- DataTable dtNew2 = dtNew.DefaultView.ToTable(false, 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;
- }