我试图将所有选定的行从一个数据网格复制到另一个数据网格。以下是我到目前为止所做的事情:
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
});
我收到了错误:
&#39; System.Collections.Generic.IEnumerable&#39; 不包含&#39;项目&#39;的定义没有扩展方法 &#39;项目&#39;接受第一个类型的参数 &#39; System.Collections.Generic.IEnumerable&#39; 可以找到(你错过了使用指令或程序集 引用?)
现在我知道我做错了,只是我不知道如何通过代码片段向我展示我想要实现的目标。
所以我的问题是,我如何能够从items
演员表中访问该数据并将其添加到我的第二个数据网格的ViewQuoteItemList
?
答案 0 :(得分:2)
您可以使用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);
答案 1 :(得分:1)
这将满足您只需将所选行添加到数据表中的需要。然后,如果您只想将它们添加到一起,则可以合并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