2014-01-13 2 views
0

У меня есть список, и я хочу пройти каждое условие элемента и вставить его в документ. Проблема в том, что я не знаю, как найти элемент и пройти каждое условие до тех пор, пока элемент не изменится, а затем начнется снова.Цикл цикла для каждого элемента заполнения документа

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 изменения затем запустить Еогеасп снова.

ответ

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

Смежные вопросы