我正在尝试格式化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时,我只希望值为“”。任何想法。
提前谢谢。
答案 0 :(得分: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 = "";
}
}