2009-09-15 7 views

Antwort

114

Das DataView-Objekt selbst wird zum Durchlaufen von DataView-Zeilen verwendet.

DataView-Zeilen werden durch das Objekt DataRowView dargestellt. Die Eigenschaft DataRowView.Row bietet Zugriff auf die ursprüngliche DataTable-Zeile.

C#

foreach (DataRowView rowView in dataView) 
{ 
    DataRow row = rowView.Row; 
    // Do something // 
} 

VB.NET

For Each rowView As DataRowView in dataView 
    Dim row As DataRow = rowView.Row 
    ' Do something ' 
Next 
2

// Sie können Dataview zu Tabelle konvertieren. Verwenden von DataView.ToTable();

foreach (DataRow drGroup in dtGroups.Rows) 
{ 
    dtForms.DefaultView.RowFilter = "ParentFormID='" + drGroup["FormId"].ToString() + "'"; 

    if (dtForms.DefaultView.Count > 0) 
    { 
     foreach (DataRow drForm in dtForms.DefaultView.ToTable().Rows) 
     { 
      drNew = dtNew.NewRow(); 

      drNew["FormId"] = drForm["FormId"]; 
      drNew["FormCaption"] = drForm["FormCaption"]; 
      drNew["GroupName"] = drGroup["GroupName"]; 
      dtNew.Rows.Add(drNew); 
     } 
    } 
} 

// Oder Sie verwenden können

// 2.

dtForms.DefaultView.RowFilter = "ParentFormID='" + drGroup["FormId"].ToString() + "'"; 

DataTable DTFormFilter = dtForms.DefaultView.ToTable(); 

foreach (DataRow drFormFilter in DTFormFilter.Rows) 
{ 
          //Your logic goes here 
} 
0

Ich ziehe es in einer direkteren Art und Weise zu tun. Es hat nicht die Zeilen, aber es hat immer noch das Array von Zeilen.

tblCrm.DefaultView.RowFilter = "customertype = 'new'"; 

qtytotal = 0; 
for (int i = 0; i < tblCrm.DefaultView.Count; i++) 
{ 
    result = double.TryParse(tblCrm.DefaultView[i]["qty"].ToString(), out num); 
    if (result == false) num = 0; 
    qtytotal = qtytotal + num; 
} 

labQty.Text = qtytotal.ToString();