如何遍历`DataView.RowFilter`并从每行中的特定单元格中提取值

时间:2018-04-23 14:20:10

标签: c# foreach datagridview

我正在尝试迭代RowFilter并使用下面的代码从每行中的特定单元格中提取值。

 private void button1_Click(object sender, EventArgs e)
        {
            var Dt = sIMSDataSet.Stock;
            var Dv = new DataView(Dt);
            Dv.RowFilter = "CheckedOutUntil = " + "'" + DateTime.Now.ToString("dd MMMM yyyy") + "'";
            dataGridView1.DataSource = Dv;

            foreach (var row in dataGridView1.Rows)
            {
                var date = dataGridView1.Rows[0].Cells[16].Value.ToString();
                var itemName = dataGridView1.Rows[0].Cells[2].Value.ToString();
                var Email = dataGridView1.Rows[0].Cells[15].Value.ToString();

                SendEmail(date, itemName, Email);
            }
        }

然而,过滤器工作得很好。我遇到的问题是for each循环,而不是迭代遍历每一行,它只循环第一行返回的行数。

要发生的事情是date itemNameEmail应该是返回的每个seperte行的值。

1 个答案:

答案 0 :(得分:2)

您正在使用foreach循环,但之后不使用row变量。 您只使用第一行,因为您使用的是dataGridView1.Rows[0]而不是row。进行替换,您将看到您想要的功能。

foreach (var row in dataGridView1.Rows)
{
    var date = row.Cells[16].Value.ToString();
    var itemName = row.Cells[2].Value.ToString();
    var Email = row.Cells[15].Value.ToString();
    SendEmail(date, itemName, Email);
}