public class Employee
{
public int EmployeeKey {get;set;}
public string LastName {get;set;}
public string FirstName {get;set;}
public bool IsActive {get;set;}
}
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells["columnname"].Value != null)
{
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.MistyRose;
}
}
0
只是关于设置 DefaultCellStyle.BackColor 的注释...除了 Color.Empty 之外,您无法将其设置为任何透明值 . 那个's the default value. That falsely implies (to me, anyway) that transparent colors are OK. They'不是 . 我设置为透明颜色的每一行都会绘制所选行的颜色 .
在这个问题上,我花了太多时间在墙上撞墙 .
13
int counter = gridEstimateSales.Rows.Count;
for (int i = 0; i < counter; i++)
{
if (i == counter-1)
{
//this is where your LAST LINE code goes
//row.DefaultCellStyle.BackColor = Color.Yellow;
gridEstimateSales.Rows[i].DefaultCellStyle.BackColor = Color.Red;
}
else
{
//this is your normal code NOT LAST LINE
//row.DefaultCellStyle.BackColor = Color.Red;
gridEstimateSales.Rows[i].DefaultCellStyle.BackColor = Color.White;
}
}
17 回答
您需要遍历datagridview中的行,然后比较每行上的第7列和第10列的值 .
试试这个:
我只是在研究这个问题(所以我知道这个问题大约在3年前发布,但也许它会帮助某些人......)但似乎更好的选择是将代码置于
RowPrePaint
事件中以便你不要t必须遍历每一行,只有那些被绘制的行(所以它会在大量数据上表现得更好:附加到活动
事件代码
你正在寻找CellFormatting事件 .
Here就是一个例子 .
我也无法更改文本颜色 - 我从未看到颜色变化 .
直到我添加代码以将文本颜色更改为事件
DataBindingsComplete
forDataGridView
. 之后它起作用了 .我希望这能帮助那些面临同样问题的人 .
类似于以下内容...假设单元格中的值是整数 .
未经测试,对任何错误表示歉意 .
如果您知道特定行,则可以跳过迭代:
有些人喜欢使用
Paint
,CellPainting
或CellFormatting
事件,但请注意,更改这些事件中的样式会导致递归调用 . 如果您使用DataBindingComplete
,它将只执行一次 .CellFormatting
的参数是仅在可见单元格上调用它,因此您不必格式化不可见单元格,而是将它们格式化多次 .您可以使用条件逐行更改
Backcolor
,并在应用Datasource
DatagridView
后调用此函数 .这是功能 . 只需将其复制并放在
Databind
之后这是我使用bindingDataSource将颜色更改为dataGridView的解决方案:
如果绑定到具体对象的(集合),则可以通过行的DataBoundItem属性获取该具体对象 . (避免检查单元格中的魔术字符串并使用对象的“真实”属性)
下面的骨架示例:
DTO / POCO
绑定到datagridview
那么事件处理程序并获取具体对象(而不是DataGridRow和/或单元格)
我通常喜欢使用GridView.RowDataBound事件事件 .
适用于Visual Studio 2010.(我试过了,它的工作原理!) It will paint your entire row.
为
datagridview
创建一个按钮 .创建一个
CellClick
事件并将下一行代码放在其中 .您还没有提到 Value 如何变化 . 当用户输入值时,我使用了类似的功能 . 即进入和离开编辑模式 .
使用 CellEndEdit datagridview事件 .
您可以以类似的方式添加用于清除错误通知的逻辑 .
如果在您的情况下,如果以编程方式加载数据,则 CellLeave 事件可以与相同的代码一起使用 .
使用此代码,您只能更改行backcolor,其中columname值为null其他行color仍然是默认值 .
只是关于设置
DefaultCellStyle.BackColor
的注释...除了Color.Empty
之外,您无法将其设置为任何透明值 . 那个's the default value. That falsely implies (to me, anyway) that transparent colors are OK. They'不是 . 我设置为透明颜色的每一行都会绘制所选行的颜色 .在这个问题上,我花了太多时间在墙上撞墙 .
int counter = gridEstimateSales.Rows.Count;
我登陆这里寻找一个解决方案,我不使用数据绑定 . 没有什么对我有用,但我最终得到它: