2017-09-13 45 views
0

我有datagridDGV。那gridview有一列"File Name",並填入您在openfildialog中選擇的文件的名稱。執行計算後,我將結果放在第二個datagridDGV2中,您會看到我已經在下面註釋,因爲我想將它們放在第012列的相應"File Name"旁邊的第二列上,並且只使用一個gridview 。然而,這僅僅是考慮上次計算,複製它在每一行,而不是單獨計算(因爲他們都應該是差異)將數據添加到Datagrid的第二列

因此,它應該是這樣的:

File1 4.5 
File2 3.5 

相反它只是在做

File1 3.5 
File2 3.5 

我知道我造成了它,我在這裏做了一些錯誤,我只是不知道如何解決它。

private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow row in DGV_Hidden.Rows) 
     { 
      FileInfo info = new FileInfo(); 
      { 
       var lines = File.ReadAllLines(row.Cells["colfilelocation"].Value.ToString()); 
       var data = lines.Where(line => (!line.Contains(Data_Start_Point_Identifier) && !line.Contains(FSD__Line_Identifier) && !line.EndsWith("0.00"))).ToList(); 

       if (data.Count > 1) 
       { 
        var line = data[0]; 
        var firstsplit = data[1].Split(splitter); 
        info.startvalue = Convert.ToDouble(firstsplit[0]); 
        var secondsplit = data[data.Count - 1].Split(splitter); 
        info.endvalue = Convert.ToDouble(secondsplit[0]); 
       } 
       info.finalnum = info.startvalue - info.endvalue; 
      } 
      //DGV2.Rows.Add(info.finalnum); 
      for (int i = 0; i < DGV.Rows.Count; i++) 
      { 
       DGV.Rows[i].Cells["colfiledata"].Value = info.finalnum; 
      } 
     } 
    } 
+0

你的代碼似乎做的是所有行的列設置到最後一個文件的'info.finalnum'的最後一件事。我想你只想爲那個特定的文件設置,而不是全部。 –

+0

您正在將DGV中的每一行都設置爲for循環中的info.filenum,我打賭的是您看到重複的值。 –

+0

你們倆都正確。我也看到了。我討厭在這裏發聲,但我不確定如何個性化這一點。編輯我所擁有的內容是否夠簡單?任何代碼建議將不勝感激。 – Logan

回答

1

OK, 正如你說你行的類似數據/號碼,你只需要設置的值,同時通過你的隱藏網格循環。使用循環變量的行索引來獲取正確的行。

private void btnCalculate_Click(object sender, EventArgs e) 
    { 
     foreach (DataGridViewRow row in DGV_Hidden.Rows) 
     { 
      FileInfo info = new FileInfo(); 
      { 
       var lines = File.ReadAllLines(row.Cells["colfilelocation"].Value.ToString()); 
       var data = lines.Where(line => (!line.Contains(Data_Start_Point_Identifier) && !line.Contains(FSD__Line_Identifier) && !line.EndsWith("0.00"))).ToList(); 

       if (data.Count > 1) 
       { 
        var line = data[0]; 
        var firstsplit = data[1].Split(splitter); 
        info.startvalue = Convert.ToDouble(firstsplit[0]); 
        var secondsplit = data[data.Count - 1].Split(splitter); 
        info.endvalue = Convert.ToDouble(secondsplit[0]); 
       } 
       info.finalnum = info.startvalue - info.endvalue; 
      } 
     //set your value here 
      DGV.Rows[row.Index].Cells["colfiledata"].Value = info.finalnum; 
     } 
    } 
+0

是的,這就是我所需要的。現在似乎很愚蠢。好好看看! – Logan