我正在尝试迭代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
itemName
和Email
应该是返回的每个seperte行的值。
答案 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);
}