【问题标题】:Copy data from one datagridview to another in c#在c#中将数据从一个datagridview复制到另一个
【发布时间】:2011-05-30 06:16:13
【问题描述】:
for (int i = 0; i < form2.dataGridView1.Rows.Count; i++)
{                  

    if ( form2.dataGridView2.Rows[i].Cells[0].Value != null && 
         (bool) form2.dataGridView2.Rows[i].Cells[0].Value == true )
    {
        form2.dataGridView2.Rows.Add();
        for (int j = 1; j < form2.dataGridView1.Columns.Count; j++)
            form2.dataGridView2.Rows[i].Cells[j].Value = 
                form2.dataGridView1.Rows[i].Cells[j].Value;

    }

}  

上面的代码没有给出任何结果。请告诉我如何将一个datagridview的数据复制到另一个?

【问题讨论】:

  • 第一个GridView控件怎么填?
  • 看起来您确实检查了错误的 dataGridView 数据。 if (form2.datagridview2.value != null) .... 所以你检查目标是否包含数据 - 但你应该检查源是否包含要复制的数据。无论如何 - 如果你的 dataGridView 有某种数据源 - 你可以考虑复制源而不是复制 gridView 中的数据 - hth
  • 如何为 dataGridView1 添加数据。您是否绑定了这些值?

标签: c# datagrid


【解决方案1】:

检查Copy from datagridview and paste to second datagridview

另外,您可以执行以下操作:

//Bind datagridview to linq 
var gd1 = 
    ( from a in datagridview.Rows.Cast<DataGridViewRow>()
      select new {Column1 = a.Cells["Column1"].Value.ToString() }).tolist();

//loop dg1 and save it to datagridview2
foreach(var b in dg1)
{
    datagridview2.Rows.Add(b.Column1);    
}

问候

【讨论】:

    【解决方案2】:

    在 form1 中复制此代码

    private void Form1_Load(object sender,EventArgs e)
    {
        dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;      
        dataGridView1.Columns.Insert(0, new DataGridViewCheckBoxColumn());
        show_chkBox();
        SqlConnection con = new SqlConnection("server=(local);DataBase=RIMS;User 
        d=sa;Password=Rootdb");
        SqlCommand com = new SqlCommand("Select * from Master_City", con);
        SqlDataAdapter da = new SqlDataAdapter(com);
        DataSet ds = new DataSet();
        da.Fill(ds, "city");
        dataGridView1.DataSource = ds;
        dataGridView1.DataMember = "city";
    }
    
    private void button1_Click_1(object sender, EventArgs e)
    {
        DataGridViewRow dr = dataGridView1.SelectedRows[0];
        dtItems.Columns.Add("city_ID");
        dtItems.Columns.Add("city_Name");
        dtItems.Columns.Add("status");
        dtItems.Columns.Add("date");    
        if (dataGridView1.Rows.Count > 1)
        {
            for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
            {
                if (dataGridView1.Rows[i].Cells[0].Value != null)
                {
                    DataRow row;
                    row = dtItems.NewRow();  
                    row["city_ID"] = dataGridView1.Rows[i].Cells[1].Value.ToString();
                    row["city_Name"] = dataGridView1.Rows[i].Cells[2].Value.ToString();    
                    row["status"] = dataGridView1.Rows[i].Cells[3].Value.ToString();    
                    row["date"] = dataGridView1.Rows[i].Cells[4].Value.ToString();    
                    dtItems.Rows.Add(row);    
                }    
            }    
        }    
        Form2 frm = new Form2(dtItems);    
        frm.ShowDialog();    
    }    
    

    在form2中复制此代码..

    public Form2(DataTable dtIt)    
    {    
        dtItems = dtIt;    
        InitializeComponent();    
    }    
    
    private void AddEmptyRows()    
    {    
        for (int i = 1; i <= 5; i++)    
        {    
            dataGV.Rows.Add();    
        }    
    }    
    
    private void Form2_Load(object sender, EventArgs e)
    {    
        AddEmptyRows();    
        for (int i = 0; i < dtItems.Rows.Count; i++)    
        {    
            dataGV.Rows[i].Cells[0].Value = dtItems.Rows[i]["city_ID"];    
            dataGV.Rows[i].Cells[1].Value = dtItems.Rows[i]["city_Name"];    
            dataGV.Rows[i].Cells[2].Value = dtItems.Rows[i]["status"];    
            dataGV.Rows[i].Cells[3].Value = dtItems.Rows[i]["date"];    
        }    
        dataGV.Enabled = true;    
    }
    

    【讨论】:

      【解决方案3】:

      将数据从一个数据视图镜像到另一个数据视图

      如果您只想将一个 DataGridView 中的数据镜像到另一个 DataGridView 中。例如:DataGridView1 镜像 DataGridView2 中的数据。

      DataGridView2.DataSource = DataGridView1.DataSource;
      

      请记住,这只会将 DataGridView 上的数据镜像到另一个中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-24
        • 1970-01-01
        • 2011-09-14
        • 1970-01-01
        相关资源
        最近更新 更多