
切换应用程序以使用DevExpress XtraGrid,并实现了行/单元格的自定义颜色和格式。
对于大多数零件来说,格式的应用是正确的。但是,当应用于遵循"#,###;(#,###);0“格式的小数1000时,结果是1000.0000而不是1,000。
gridView.RowCellStyle += CellFormatting;
private void CellFormatting(object sender, RowCellStyleEventArgs e)
{
if (gridView.IsRowSelected(e.RowHandle))
{
e.Appearance.BackColor = SystemColors.Highlight;
e.Appearance.ForeColor = SystemColors.HighlightText;
return;
}
// get cell by its index
var gridRow = gridView.GetRow(e.RowHandle);
TLColumn columnEnum = ((BindableTextBoxColumn)e.Column).ColumnEnum;
// get new format values
T row = (T)gridRow;
e.Column.DisplayFormat.FormatString = row.GetCellFormat(columnEnum);
e.Appearance.BackColor = row.GetCellBackColor(columnEnum);
e.Appearance.ForeColor = row.GetCellColor(columnEnum);
}发布于 2017-03-09 05:52:11
对于不使用CustomColumnDisplayText的绑定列,需要在设置DisplayFormatString之前设置FormatType。
e.Column.ColumnType 可以显示绑定属性的类型
private void CellFormatting(object sender, RowCellStyleEventArgs e)
{
// get cell by its index
var gridRow = gridView.GetRow(e.RowHandle);
var column = (BindableTextBoxColumn)e.Column;
TLColumn columnEnum = column.ColumnEnum;
// get new format values
T row = (T)gridRow;
e.Column.DisplayFormat.FormatType = (column.IsNumeric) ? FormatType.Numeric : column.DisplayFormat.FormatType;
e.Column.DisplayFormat.FormatString = row.GetCellFormat(columnEnum);
if (gridView.IsRowSelected(e.RowHandle))
{
e.Appearance.BackColor = SystemColors.Highlight;
e.Appearance.ForeColor = SystemColors.HighlightText;
return;
}
e.Appearance.BackColor = row.GetCellBackColor(columnEnum);
e.Appearance.ForeColor = row.GetCellColor(columnEnum);
}https://stackoverflow.com/questions/42679241
复制相似问题