Obiekt DataView
nie ma właściwości Rows
, takiej jak DataTable
.Pętla w wierszach DataView
Jak przechodzić między wierszami DataView?
Obiekt DataView
nie ma właściwości Rows
, takiej jak DataTable
.Pętla w wierszach DataView
Jak przechodzić między wierszami DataView?
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
// 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
}
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();