将DataGridView行复制到另一个DataGridView中

时间:2011-06-13 20:54:56

标签: c# datagridview clone

所以基本上我有2 DataGridView,我需要将行从一个复制到另一个。

到目前为止,我已尝试过:

DataGridViewRowCollection tmpRowCollection = DataGridView1.Rows;

DataGridViewRow[] tmpRowArray = new DataGridViewRow[tmpRowCollection.Count];
tmpRowCollection.CopyTo(tmpRowArray, 0);            

DataGridView2.Rows.AddRange((DataGridViewRow[]) tmpRowArray));

但它一直在说

"Row provided already belongs to a DataGridView control."

那么复制行内容的最佳方式是什么(DataGridView都有相同的列)?

4 个答案:

答案 0 :(得分:5)

您可以使用以下链接中的功能

private DataGridView CopyDataGridView(DataGridView dgv_org)
{
    DataGridView dgv_copy = new DataGridView();
    try
    {
        if (dgv_copy.Columns.Count == 0)
        {
            foreach (DataGridViewColumn dgvc in dgv_org.Columns)
            {
                dgv_copy.Columns.Add(dgvc.Clone() as DataGridViewColumn);
            }
        }

        DataGridViewRow row = new DataGridViewRow();

        for (int i = 0; i < dgv_org.Rows.Count; i++)
        {
            row = (DataGridViewRow)dgv_org.Rows[i].Clone();
            int intColIndex = 0;
            foreach (DataGridViewCell cell in dgv_org.Rows[i].Cells)
            {
                row.Cells[intColIndex].Value = cell.Value;
                intColIndex++;
            }
            dgv_copy.Rows.Add(row);
        }
        dgv_copy.AllowUserToAddRows = false;
        dgv_copy.Refresh();

    }
    catch (Exception ex)
    {
        cf.ShowExceptionErrorMsg("Copy DataGridViw", ex);
    }
    return dgv_copy;
}

http://canlu.blogspot.com/2009/06/copying-datagridviewrow-to-another.html

答案 1 :(得分:1)

您需要先从原始行克隆该行,然后添加到新视图。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.clone.aspx

答案 2 :(得分:0)

我建议使用支持DTO。不是直接处理行,而是创建一个包含GridViews所有列的DTO,然后使用它们的List作为您的DataSource。然后,添加/删除行所需要做的就是在列表中添加/删除DTO。

答案 3 :(得分:0)

写下这个:

public function get_autocomplete_results($search_term) { 
        $this->db->SELECT('country'); 
        $this->db->like('country',$search_term); 
        $query = $this->db->get('country_table'); 
        return $query->result_array(); 
    }