Gridcontrol编辑/更新必填字段的不同颜色

时间:2016-02-15 11:41:49

标签: vb.net devexpress edit background-color gridcontrol

我只是想知道在添加新行时如何更改必填字段的背景颜色。 例如,姓名和姓氏将为红色(强制性),电话将为默认白色。

谢谢 Patryk

2 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是通过网格设计器 - 在大多数情况下,您无需编写任何代码即可完成此操作。

如果您转到网格视图设计器,请选择菜单项“外观”和“格式规则:”

enter image description here

从这里,您可以点击加号图标添加格式条件:

enter image description here

在“列”下,选择要应用格式条件的列。

在“规则”下,选择适当的规则 - 根据您所描述的内容,您可能需要“基于值的格式”,FormatConditionRuleValue

在同一对话框的“规则”选项卡上,您可以相应地设置“Value1”和“Condition”属性,例如Value1 = 15,Condition =“equals。”

“外观”属性可让您根据这些条件确定如何格式化单元格。

这种方法的优点在于它是所有基于设计器的代码,并且它非常容易定制。格式化背后的逻辑也非常透明。格式条件已扩展为允许您评估表达式,这意味着您可以使用其他列值和函数创建自己的公式。

如果所有其他方法都失败了,您可以使用RowCellStyle事件,但我的第一次尝试始终是使用设计器工具。

答案 1 :(得分:1)

您可以使用事件gvView_CustomDrawCell并仅在线路处于您需要的状态时设置背景颜色(已添加,已分离...)

 private void gvView_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
    {
      if (e.Column != null && (e.Column.Name == bgcName.Name || e.Column.Name == bgcSureName.Name))
      {        
        DataRow focusedRow = gvView.GetDataRow(e.RowHandle);
        if (focusedRow != null)
        {          
          if (focusedRow.RowState == DataRowState.Added)
          {
            e.Appearance.BackColor = Color.FromArgb(80, 10, 30, 200);
          }
        }
      }
    }

ASD