2017-03-08 17 views
0

enter image description here DevExpress XtraGridを使用するアプリケーションを切り替え、行/セルのカスタマイズされた色と書式を実装しました。DevExpress DisplayFormat in RowCellStyle

ほとんどの形式が正しく適用されています。しかし、 "#、###;(#、###); 0"という形式の小数点以下1000桁に適用すると、1000ではなく1000.0000になります。

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); 

} 

答えて

0

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); 
}