Цикл по строкам в DataView - PullRequest
       10

Цикл по строкам в DataView

50 голосов
/ 15 сентября 2009

Объект DataView не имеет свойства Rows, например DataTable.

Как мне перебрать строки в DataView?

Ответы [ 3 ]

125 голосов
/ 15 сентября 2009

Сам объект 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 голосов
/ 08 марта 2013

// Вы можете конвертировать DataView в таблицу. using 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
}
1 голос
/ 29 января 2014

Я предпочитаю делать это более прямым способом. У него нет строк, но все еще есть массив строк.

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