1

我正在尝试格式化 DataGridView 中的指定行,但它会一直格式化我的 DataGridView 中的所有行。这就是我正在做的事情:

private void dgwParti_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        foreach (DeParti tmp in bnsParti)
        {
            if (tmp.Arti.Type == ArtiType.Fast)
            {
                if (e.ColumnIndex == 0 || e.ColumnIndex == 3 ||
                    e.ColumnIndex == 8 || e.ColumnIndex == 9)
                {
                    e.Value = "";
                }
            }
        }
    }

使用这种类型的代码,它会在所有行中将单元格值设置为“”,但我只希望当 Arti 类型为 Fast 时该值为“”。有任何想法吗。
提前致谢。

4

1 回答 1

2

如果您必须格式化指定的行,为什么要检查列?

访问 DataBoundItem(与正在格式化的行关联的对象)并根据您的逻辑修改 Value。不要直接访问绑定源。你的代码应该是

private void dgwParti_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if ((Rows[e.RowIndex].DataBoundItem as DeParti).Arti.Type == ArtiType.Fast)
    {
         e.Value = "";
    }
}

这将“清理”行中的所有单元格,如果您希望仅在某些列上设置 Value="",则可以添加检查,例如

private void dgwParti_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if ((Rows[e.RowIndex].DataBoundItem as DeParti).Arti.Type == ArtiType.Fast
        && e.ColumnIndex == 8)
    {
         e.Value = "";
    }
}
于 2012-10-26T12:47:26.790 回答