2016-02-01 70 views
0

我試圖將所有選定的行從一個數據網格複製到另一個。這裏是我一直在努力,到目前爲止做:將一個DataGrid的所有行復制到另一個

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' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'System.Collections.Generic.IEnumerable' could be found (are you missing a using directive or an assembly reference?)

現在我知道我做錯了,只是我不知道我怎麼能告訴你我想用代碼片段實現什麼。

所以我的問題是,我將如何能夠從items演員訪問該數據並將其添加到我的ViewQuoteItemList爲我的第二個數據網格?

+0

你想要的是在'items'元素(而不是'items.Item'像'項目[0] .Item',我的意思嗎?)不它?你如何準確地得到'物品'?從'物品[0]'? '項[1]'? '項[2]'? 'items'中的每個'item'? – Ian

+0

爲什麼不將第一個datagridview保存到數據表中,然後重新導入該表作爲第二個數據gridview的源? – Takarii

+0

感謝您的評論伊恩。是的,我想獲得物品中的每件物品。 Foreach語句也許? – CareTaker22

回答

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); 
+0

@ CareTaker22很高興知道! ;)希望它可能會有助於你學習LINQ太.. – Ian

+0

嗨伊恩。又是我。看到你幫我解決了我的這個問題,並且在C#中很棒。我想知道你是否有時間看看我剛纔提出的另一個問題。到目前爲止,沒有人回答或評論我的問題,我急需幫助。 [鏈接](http://stackoverflow.com/questions/35138374/adding-data-only-to-a-specific-column-in-a-datagrid)我的問題,如果你想查看它。我真的希望你能幫忙或者給我一個小小的建議:) – CareTaker22

+0

@ CareTaker22看起來我們住在不同的時區在這裏......好吧,我會去檢查一下。 – Ian

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

+0

感謝Takarii的回答! :)伊恩的答案更簡單,現在完成了工作。感謝你的努力人。如果遇到任何問題,我會在以後的問題中保留你的答案;) – CareTaker22

相關問題