2009-09-15 18 views

Odpowiedz

114

Sam obiekt DataView służy do przechodzenia między wierszami DataView.

Wiersze DataView są reprezentowane przez obiekt DataRowView. Właściwość DataRowView.Row zapewnia dostęp do oryginalnego wiersza DataTable.

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

// Można konwertować DataView do tabeli. przy użyciu 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); 
     } 
    } 
} 

// lub użyć

// 2.

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

DataTable DTFormFilter = dtForms.DefaultView.ToTable(); 

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

Wolę to robić w bardziej bezpośredni sposób. Nie ma wierszy, ale nadal ma tablicę wierszy.

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();