.net - Looping a través de filas en un DataView
loops (3)
El objeto DataView
no tiene una propiedad Rows
como DataTable
.
¿Cómo recorro las filas de un DataView?
// Puedes convertir DataView en Table. usando 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);
}
}
}
// O puede usar
// 2.
dtForms.DefaultView.RowFilter = "ParentFormID=''" + drGroup["FormId"].ToString() + "''";
DataTable DTFormFilter = dtForms.DefaultView.ToTable();
foreach (DataRow drFormFilter in DTFormFilter.Rows)
{
//Your logic goes here
}
El objeto DataView en sí mismo se utiliza para recorrer las filas de DataView.
Las filas de DataView están representadas por el objeto DataRowView . La propiedad DataRowView.Row proporciona acceso a la fila de DataTable original.
DO#
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
Prefiero hacerlo de una manera más directa. No tiene las Filas, pero todavía tiene la matriz de filas.
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();