首页 文章

将所有行从一个DataGrid复制到另一个DataGrid

提问于
浏览
0

我正在尝试将所有选定的行从一个数据网格复制到另一个数据网格 . 这是我到目前为止一直在尝试做的事情:

private void btnFeedbackSelectSupplier_Click(object sender, RoutedEventArgs e)
{
    dgFeedbackAddCost.SelectAll();

    IList list = dgFeedbackAddCost.SelectedItems as IList;
    IEnumerable<ViewQuoteItemList> items = list.Cast<ViewQuoteItemList>();

    //Example of how I want to access the data from the first datagrid and add it to
    //the second one.
    var item = (new ViewQuoteItemList
    {
        Item = items.Item,
        Supplier = items.Cost
    });
    //Example

    dgFeedbackSelectSupplier.Items.Add(item);
}

我的问题在这里:

var item = (new ViewQuoteItemList
{
    Item = items.Item,
    Supplier = items.Cost
});

我收到了错误:

'System.Collections.Generic.IEnumerable'不包含'Item'的定义,并且没有扩展方法'Item'可以找到类型'System.Collections.Generic.IEnumerable'的第一个参数(你是否错过了使用指令或程序集引用?)

现在我知道我做错了,只是我不知道我怎么能告诉你我想用代码片段实现什么 .

所以我的问题是,我如何能够从 items 演员中访问该数据并将其添加到我的第二个数据网格的 ViewQuoteItemList 中?

2 回答

  • 1

    您可以使用LINQ获取所有新项目:

    var items2 = (from i in items
               let a = new ViewQuoteItemList { Item = i.Item, Supplier = i.Cost }
               select a).ToList();
    
    foreach(var item in items2)
        dgFeedbackSelectSupplier.Items.Add(item);
    
  • 2

    这将满足您只需将所选行添加到数据表中的需要 . 然后,如果您只想将它们添加到一起,则可以合并2个数据表 - 然后将源重新绑定到第二个网格 .

    DataTable dt = new DataTable();
    foreach (DataGridViewColumn column in dataGridView1.Columns)
        dt.Columns.Add(column.Name, column.CellType);
    for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
    {
         dt.Rows.Add();
         for (int j = 0; j < dataGridView1.Columns.Count; j++)
         {
             dt.Rows[i][j] = dataGridView1.SelectedRows[i].Cells[j].Value;
    
         }
     }
    

    参考Here

相关问题