c# 将DataGridViewRows转换为DataTable数据

         /// <summary>
  1.         /// 将DataGridViewRows转换为DataTable数据  
  2.         /// </summary>  
  3.         /// <param name="Listrows">DataGridView的行集合</param>  
  4.         /// <param name="dtSource">源数据表</param>  
  5.         /// <param name="colum">映射关系</param>  
  6.         /// <param name="dtDestination">目的数据表</param>  
  7.         /// <returns>返回新的DataTable</returns>  
  8.         public static DataTable Getdatatable(DataGridViewRowCollection Listrows, DataTable dtSource, 
  9.                      string[,] colum, DataTable dtDestination)  
  10.         {  
  11.             //  string[,] colum = { { "id1", "id2" }, { "name1", "name2" } };  
  12.             //  colum是源DataGridViewRow到目标DataRow的映射关系  
  13.             DataTable dtNew = dtSource.Clone();//复制表结构  
  14.             foreach (DataGridViewRow dgvr in Listrows)  
  15.             {  
  16.                //转换成数据行DataRow  
  17.                 DataRow dataRow = (dgvr.DataBoundItem as DataRowView).Row;  
  18.                 dtNew.ImportRow(dataRow);  //添加DataRow到DataTable  
  19.             }  
  20.             string[] copy = new string[colum.Length / 2];  
  21.             for (int i = 0; i < colum.Length / 2; i++)  
  22.             {  
  23.                 copy[i] = colum[i, 0];  //获取源数据要的列  
  24.             }  
  25.             //复制源表结构和数据,并只保留copy数据中的列  
  26.             DataTable dtNew2 = dtNew.DefaultView.ToTable(false, copy);
  27.             if (dtDestination != null)  
  28.             {  
  29.                 for (int j = 0; j < dtNew2.Rows.Count; j++)  
  30.                 {  
  31.                     DataRow row = dtDestination.NewRow();  
  32.                     for (int f = 0; f < colum.Length / 2; f++)  
  33.                     {  
  34.                         //将源表中每行的各列数据复制到对应的目的表的行中
  35.                         row[colum[f, 1]] = dtNew2.Rows[j][colum[f, 0]]; 
  36.                     }  
  37.                     dtDestination.Rows.Add(row); //添加到目的表  
  38.                 }  
  39.             }  
  40.             return dtDestination;  
  41.         }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值