在DataView中循环遍历行

DataView对象没有DataTable类的Rows属性。

如何循环访问DataView的行?

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 

//你可以将DataView转换成Table。 使用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 } 

我更喜欢以更直接的方式来做。 它没有行,但仍然有行的数组。

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