2014-01-13 57 views
0

我有一個列表,我想通過每個項目條件並將其插入到文檔中。問題是,我不知道如何找到一個項目,並通過每個條件,直到項目更改,然後再次開始。每個項目的Foreach循環填充文檔

Item Condition  Total 
Bag  New   3 
Bag  Old   5 
Jacket  New   2 
Racket  New   1 
Racket  old   3 
Racket  unknown  8 

這是我做的:

foreach (DataGridViewRow row in tracker.dataGridView1.Rows) 
     { 
      if (row.Cells[0].Value != null) 
      { 

       string template = @"C:\ document.pdf"; 
      string newFile = @"c:\"+ row.Cells[0].Value.ToString() +".pdf"; 
       PdfReader pdfReader = new PdfReader(pdfTemplate); 
       PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)); 
       AcroFields pdfFormFields = pdfStamper.AcroFields; 

****************************************************************************** 

// set values for fields 
         if (row.Cells[1].Value.ToString() == "New") 
         { 
          pdfFormFields.SetField("Condition", row.Cells[2].Value.ToString()); 
         } 
         else if (row.Cells[1].Value.ToString() == "Old") 
         { 
          pdfFormFields.SetField("Condition2", row.Cells[2].Value.ToString()); 
         } 

***************************************************************************************    

       pdfStamper.FormFlattening = true; 
       pdfStamper.Close(); 


      } 
      else 

      break; 
     } 

我要天上的星星之間的代碼填寫在同一個文檔,直到row.cells [0] .value的變化,然後再次啓動的foreach。

回答

0

只需將row.cells [0] .value的值存儲在變量中,並在foreach循環的每次迭代過程中對其進行比較。

您還必須區分第一行和其他行,因爲只有這樣兩個值的比較纔有意義。

示例代碼:

string previousValue = null; 
string currentValue = null; 
bool firstRow = true; 

foreach (DataGridViewRow row in tracker.dataGridView1.Rows) 
{ 
    currentValue = row.Cells[0].Value.ToString(); 

    if (currentValue != null) 
    { 
      string template = @"C:\ document.pdf"; 
      string newFile = @"c:\"+ currentValue +".pdf"; 
      PdfReader pdfReader = new PdfReader(pdfTemplate); 
      PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)); 
      AcroFields pdfFormFields = pdfStamper.AcroFields; 


      // Compare previous with current value 
      if (!firstRow && previousValue != currentValue) 
      { 
       // Difference, start new document 
       .... 

      } 
      else 
      { 
       // Same Value 
      } 

      // When row is handled, update previous with current value, and set firstRow to false 

      previousValue = currentValue; 
      firstRow = false; 
... 
+0

這就是我想要做的,但我被困在如何做到這一點。你能舉個例子嗎? – user3102700

+0

任何人都可以幫忙嗎? – user3102700

+0

或者如果更簡單,我可以對我的選擇查詢進行排序,以顯示每個項目不同列中的條件。 – user3102700