winform下从数据库提取数据后放进table里
通过BindingSource绑定到dataGridView上
利用BindingSource的Filter属性写了查找功能
现在问题是
dataGridView内的数据,需要与一组标准值进行对比(可以以成绩为例),将符合要求的数字更换颜色。
目前我能想到的方式是:
dataGridView第一次显示数据的时候,动态判断,更新颜色;在查找操作执行后(查找操作肯定不止一次的),再进行动态判断,更新颜色。
但这样操作,总感觉影响效率
有其他办法吗?
能在数据放到datatable里后,做点“记号”,避免dataGridView内容变换一次,就要对比更新

解决方案 »

  1.   

    你在datatable里加一列,绑定的时候,也得循环判断啊,只不过是换了一个字段而已暂时没想出什么好的办法
      

  2.   

    因为  第一次 绑定后,该有的数据都有了后面的查询只不过是通过BindingSource的Filter属性  对显示内容做过过滤
    所以想在有没有办法让它  只循环判断一次
      

  3.   

    cell改变时  触发的事件里写??那样次数不是更多了......
      

  4.   

    在datagridview的CellPainting事件里写代码。
    我的例子是:
    private void dataGridView2_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
            {
                int kk = dataGridView2.Rows.Count-1;
                for (int jj = 0; jj < kk; jj++)
                    if (dataGridView2.Rows[jj].Cells["完成与否"].Value.ToString().Trim().Equals("完成"))
                    {
                        dataGridView2.Rows[jj].DefaultCellStyle.BackColor = Color.Gainsboro;//完成 灰色                }                else if (dataGridView2.Rows[jj].Cells["处理时间"].Value != null && dataGridView2.Rows[jj].Cells["处理时间"].Value.ToString().Trim() != "")
                        dataGridView2.Rows[jj].DefaultCellStyle.BackColor = Color.Yellow; // 已经处理且未完成 黄色
                    else dataGridView2.Rows[jj].DefaultCellStyle.BackColor = Color.White; //未处理且未完成  白色
            }