2017-12-18 130 views
0

我在我的WPF應用程序中有一個datagrid,我想在按鈕click中獲取列表中的所有行值。我嘗試了一些方法,但我只獲取了最後一個Row值...如何從WPF中的數據網格中獲取所有行

private async void Save_Btn_Click(object sender, RoutedEventArgs e) 
     { 
      pojo rowdata = new pojo(); 
      int rowcount = calendarmstrDG.Items.Count; 
      List<pojo> pojolist = new List<pojo>(); 
      var rows = (calendarmstrDG).SelectedItems; 
      for (int i = 1; i < rowcount - 1; i++) 
      { 
       pojo sda = (pojo)calendarmstrDG.SelectedItems; 
       pojolist.Add(sda); 
      } 
      } 

這裏calendarmstrDG是我的DataGrid的名字...... POJO是我的模型類的名字......

public class pojo 
     { 
      public string Prefix { get; set; } 
      public int Year { get; set; } 
      public int Quarter { get; set; } 
      public int SerialNo { get; set; } 
      public string From { get; set; } 
      public string To { get; set; } 
      public string PeriodName { get; set; } 
     } 
+0

1.您只訪問選定的項目,是否有意? 2.在你的for循環中,你沒有使用你的「我」來逐行選擇 – royalTS

+0

幫我準確的代碼..我想要所有的行 – Markz

回答

1

疊代使用foreach循環中的所有項目:

foreach(pojo p in calendarmstrDG.Items) 
{ 
    // do something with "p", e.g. access properties: p.SerialNo 
} 

DataGrid.Items集合包含object類型的元素,所以在foreach循環,我們必須指定確切類型pojo到能夠訪問性能

,如果你需要得到的pojo一個新的列表,這是可以做到使用LINQ:

List<pojo> list = calendarmstrDG.Items.OfType<pojo>().ToList(); 
+0

@Markz,你可以用foreach循環中的單個項目執行操作,或者你可以得到一個列表並迭代一個列表。我給出了兩個示例 – ASh

+1

@Markz整個WebAPI主題不是您問題的一部分(也不應該因爲它是一個不同的需求),所以請不要期望涉及WebAPI的答案,請不要期待「指南」的答案你在某個地方「 - 如果你問一個好的重點問題,你可以得到一個很好的重點答案(就像你已經得到的兩個答案一樣)。如果你需要一般的指導,那麼像stackoverflow這樣的Question + Answer網站是錯誤的地方。 – grek40

+0

@ASh謝謝你的指導......我得到了預期的結果。 – Markz

1

您可以使用ObservableCollection來將數據綁定到數據網格,您可以使用它沒有任何努力檢索數據。類似這樣的:

Class MyClass 
{ 
    ObservableCollection<pojo> myCollection {get;set;} 
    MyClass() 
    { 
     calendarmstrDG.DataContext = myCollection; 
    } 
    public void AddData() 
    { 
     myCollection.Add(new pojo(){ // Add Values }); 
    } 
    public void Save_Btn_Click(object sender, RoutedEventArgs e) 
    { 
     foreach(pojo items in myCollection) 
     { 
      // here get items using items.Prefix/year/.... 
     } 
    } 

} 
+0

@Markz你不能在評論中提出這個問題。如果你想,你可以問一個不同的問題,說明這個問題的擴展,以及代碼你所嘗試.... – Gopi

相關問題