2016-05-16 3 views
0

Ich habe zwei foreach Betreiber Wo:ASP.NET - Zwei Foreach operatos mit falscher Logik

  • 1. - Alle sichtbaren Zeilen und Daten in sie einzufügen;

  • 2. - foreach Zeilen von CAML Abfrage und erhalten Sie eine Daten.

Ich brauche foreach erste Reihe von Abfrage und Einsatz von Daten in ersten sichtbaren Zeilen, foreach 2. Reihe von Abfrage und Einfügen von Daten in 2. sichtbaren Zeile .... Das ist mein Code:

foreach (TableRow tr in allVisibleRows) 
{ 
    foreach (SPListItem item in myTableCol) 
    { 
     destination = item["Route"].ToString(); 
     dateGo = item["DepartureDate"].ToString(); 
     dateEnd = item["ReturnDate"].ToString(); 
     kmInCity = item["TraveledInCity"].ToString(); 
     kmOutCity = item["TraveledOutCity"].ToString(); 

     ((TextBox)tr.Cells[1].Controls[0]).Text = destination; 
     ((DateTimeControl)tr.Cells[2].Controls[0]).SelectedDate = DateTime.Parse(dateGo); 
     ((DateTimeControl)tr.Cells[3].Controls[0]).SelectedDate = DateTime.Parse(dateEnd); 
     ((TextBox)tr.Cells[4].Controls[0]).Text = kmInCity; 
     ((TextBox)tr.Cells[5].Controls[0]).Text = kmOutCity; 
    } 
} 

Ergebnis aus Code ist:

enter image description here

Wie dieses Problem zu lösen, danke zuvor ....

+2

foreach (SPListItem Artikel in tr.ItemArray) – jdweng

+0

Bitte, sagt, dass dies in einer Antwort .. mit mehr Details. – Gohyu

+1

Möchten Sie eine Spalte zur ersten Zeile hinzufügen oder möchten Sie nach der ersten Zeile eine zusätzliche Zeile hinzufügen? Welcher Art ist 'myTbl'? Und ist 'list.GetItems (tableQuery);' das gleiche wie das [SPList.GetItems] (https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.getitems.aspx)? – surfmuggle

Antwort

1

Loops korrekt aussieht, die Logik falsch ist. Sie legen einfach alle Datensätze in alle Spalten. Und am Ende sehen Sie nur die letzten der Aufzeichnungen.

int counter = 0; 

    foreach (TableRow tr in allVisibleRows) 
    { 
      destination = myTableCol[counter]["Route"].ToString(); 
      dateGo = myTableCol[counter]["DepartureDate"].ToString(); 
      dateEnd = myTableCol[counter]["ReturnDate"].ToString(); 
      kmInCity = myTableCol[counter]["TraveledInCity"].ToString(); 
      kmOutCity = myTableCol[counter]["TraveledOutCity"].ToString(); 

      ((TextBox)tr.Cells[1].Controls[0]).Text = destination; 
      ((DateTimeControl)tr.Cells[2].Controls[0]).SelectedDate = DateTime.Parse(dateGo); 
      ((DateTimeControl)tr.Cells[3].Controls[0]).SelectedDate = DateTime.Parse(dateEnd); 
      ((TextBox)tr.Cells[4].Controls[0]).Text = kmInCity; 
      ((TextBox)tr.Cells[5].Controls[0]).Text = kmOutCity; 

      counter++; 
    } 
+0

Sie haben Recht mein Problem ist in meiner Logik .. – Gohyu

+0

Dieser Code gibt mir diesen Fehler: Angegebenes Argument war außerhalb des Bereichs der gültigen Werte. – Gohyu

+1

Sie haben wahrscheinlich mehr oder weniger Zeilen in Ihrer Tabelle als die Datensätze. Mach sie gleich, damit es funktioniert. –