2014-02-17 38 views
0

中的我有2個集合的一個其他類似這樣的內,WPF 2收集數據網格

public class Meter 
    { 
     public string MeterID { get; set; } 
     public List<Data> data { get; set; } 
    } 

public class Data 
    { 
     public string Time { get; set; } 
     public int Signal { get; set; } 
    } 

,我從這樣一個txt文件中讀取,

public static void LoadMeterListFromFile(List<FileInfo> fileList) 
    { 
     foreach (FileInfo fi in fileList) 
     { 
      foreach (var line in File.ReadAllLines(fi.FullName)) 
      { 
       var columns = line.Split(';');      

       string MeterID = columns[1]; 

       if (!meters.ContainsKey(MeterID)) 
       { 
        meters.Add(MeterID, new Meter() { MeterID = MeterID, data = new List<Data>() }); 
       } 
       Data d = new Data 
      { 
       TimeStamp = columns[0], 
       Signal = Convert.ToInt32(columns[2].Replace("SignalStrength=", "")), 

      }; 
       meters[MeterID].data.Add(d); 
      } 
     } 
    } 

如何顯示這兩個集合的在一個wpf數據網格中,最好由MeterID分組?

回答

0

您應該考慮改變您讀取數據的方式並將MeterID添加到班級數據中。

public static void LoadMeterListFromFile(List<FileInfo> fileList) 
{ 
    foreach (FileInfo fi in fileList) 
    { 
     foreach (var line in File.ReadAllLines(fi.FullName)) 
     { 
      var columns = line.Split(';'); 
      string meterID= columns[1]; 

      if (!meters.ContainsKey(MeterID)) 
      { 
       meters.Add(meterID, new Meter() { MeterID = meterID, data = new List<Data>() }); 
      } 
      Data d = new Data 
      { 
       MeterID = meterID, 
       TimeStamp = columns[0], 
       Signal = Convert.ToInt32(columns[2].Replace("SignalStrength=", "")) 
      }; 
      meters[MeterID].data.Add(d); 
     } 
    } 
} 

然後,組的結果通過MeterID並將其添加到數據網格:

public MyForm() 
{ 
    InitializeComponent(); 

    // Get meters list 

    var result = new List<Data>(); 
    foreach(var m in meters) 
     result.AddRange(m.data); 

    // the records should be grouped already, but to be sure you can use linq 
    result.GroupBy(d => d.MeterID); 

    // now add data to data grid 
    BindingList<Data> data = new BindingList<Data>(result); 
    dataGridView1.DataSource = data; 
+0

THX的幫助。我已將TimeStamp更改爲DateTime,因爲我需要它在Wpf圖表中,但這意味着我需要將TimeStamp轉換爲DateTime,但我一直收到「字符串未被識別爲有效的DateTime」。我該如何解決這個問題? – user3240428

+0

錯誤的意思是,您提供給datetime的字符串沒有默認轉換。用'DateTime.ParseExact()'方法來定義和轉換你的字符串格式。你可以在這裏找到一個示例(http://stackoverflow.com/a/919276/2404858)。 –