如何循环datagridview完整行

时间:2016-12-05 17:21:58

标签: c# datagridview

我正在使用foreach循环检查来自datagridview的每一行中的数据,我想避开标题和空的buttom行,我该怎么做? 这是我的简单循环:

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    string datatocheck = row.Cells[2].Value.ToString();
    if (datatocheck == "done")
    {
        row.Cells[2].Style.ForeColor = Color.Yellow;
    }
}

2 个答案:

答案 0 :(得分:1)

在for循环中使用迭代器,您可以轻松跳过第一行和最后一行:

for (int i = 1; i < dataGridView1.Rows.Count() - 1; i++)
{
    string datatocheck = dataGridView1.Rows[i].Cells[2].Value.ToString();
    if (datatocheck == "done")
    {
        dataGridView1.Rows[i].Cells[2].Style.ForeColor = Color.Yellow;
    }
}

所以开始&#39;我&#39;在1而不是0跳过第一行,并确保&#39; i&#39;总是小于总行数减1会跳过最后一行。

答案 1 :(得分:0)

使用LINQ,你可以做下一步

var doneRows = dataGridView1.Rows
                            .Cast<DataGridViewRow>()
                            .Skip(1)
                            .Where(row => row.Cells[2].Value.ToString().Equals("done"));

foreach (var row in doneRows)
{
    row.Cells[2].Style.ForeColor = Color.Yellow;
}

或者您似乎只使用DataGridViewCell

var doneCells = dataGridView1.Rows
                             .Cast<DataGridViewRow>()
                             .Skip(1)
                             .Select(row => row.Cells[2])
                             .Where(cell => cell.Value.ToString().Equals("done"));

foreach (var cell in doneCells)
{
    cell.Style.ForeColor = Color.Yellow;
}