2017-03-08 12 views
0

enter image description here DevExpress XtraGrid를 사용하는 응용 프로그램을 전환하고 행/셀에 대해 사용자 정의 된 색상 및 형식을 구현했습니다.DevExpress DisplayFormat in RowCellStyle

대부분의 형식이 올바르게 적용되고 있습니다. 그러나 "#, ###; (#, ###); 0"형식의 십진수 1000에 적용하면 1,000 대신 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); 
}