2009-09-15 959 views

回答

114

DataView對象本身用於遍歷DataView行。

DataView行由DataRowView對象表示。 DataRowView.Row屬性提供對原始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

//可以轉換數據視圖表。使用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); 
     } 
    } 
} 

//或者你可以使用

// 2.

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

DataTable DTFormFilter = dtForms.DefaultView.ToTable(); 

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

我寧願做一個更直接的方式。它沒有行,但仍然有行數組。

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