첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ XAML

<Grid
    xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
    xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid">
    <dxg:GridControl x:Name="gridControl"
        CustomColumnGroup="gridControl_CustomColumnGroup"
        CustomGroupDisplayText="gridControl_CustomGroupDisplayText">
        <dxg:GridControl.Columns>
            <dxg:GridColumn FieldName="ProductName"  />
            <dxg:GridColumn FieldName="UnitsInStock" />
            <dxg:GridColumn FieldName="UnitsOnOrder" />
            <dxg:GridColumn
                FieldName="UnitPrice"
                SortMode="Custom">
                <dxg:GridColumn.EditSettings>
                    <dxe:SpinEditSettings DisplayFormat="c2" />
                </dxg:GridColumn.EditSettings>
            </dxg:GridColumn>
        </dxg:GridControl.Columns>
        <dxg:GridControl.View>
            <dxg:TableView />
        </dxg:GridControl.View>
    </dxg:GridControl>
</Grid>

 

728x90

 

▶ C#

using DevExpress.Xpf.Grid;

...

this.gridControl.ItemsSource = new NorthwindEntities().Products;

this.gridControl.Columns["UnitPrice"].GroupIndex = 0;

...

#region 그리드 컨트롤 커스텀 컬럼 그룹 처리하기 - gridControl_CustomColumnGroup(sender, e)

/// <summary>
/// 그리드 컨트롤 커스텀 컬럼 그룹 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void gridControl_CustomColumnGroup(object sender, CustomColumnSortEventArgs e)
{
    if(e.Column.FieldName == "UnitPrice")
    {
        double value1        = Math.Floor(Convert.ToDouble(e.Value1) / 10);
        double value2        = Math.Floor(Convert.ToDouble(e.Value2) / 10);
        int    compareResult = Comparer.Default.Compare(value1, value2);

        if(value1 > 9 && value2 > 9)
        {
            compareResult = 0;
        }

        e.Result  = compareResult;
        e.Handled = true;
    }
}

#endregion

#region 그리드 컨트롤 커스텀 그룹 표시 텍스트 처리하기 - gridControl_CustomGroupDisplayText(sender, e)

/// <summary>
/// 그리드 컨트롤 커스텀 그룹 표시 텍스트 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void gridControl_CustomGroupDisplayText(object sender, CustomGroupDisplayTextEventArgs e)
{
    if(e.Column.FieldName != "UnitPrice")
    {
        return;
    }

    int groupLevel = this.gridControl.GetRowLevelByRowHandle(e.RowHandle);

    if(groupLevel != e.Column.GroupIndex)
    {
        return;
    }

    string interval = GetIntervalString(e.Value);

    e.DisplayText = interval;
}

#endregion

#region 간격 문자열 구하기 - GetIntervalString(value) 

/// <summary>
/// 간격 문자열 구하기
/// </summary>
/// <param name="value">값</param>
/// <returns>간격 문자열</returns>
private string GetIntervalString(object value)
{
    double valueDouble = Math.Floor(Convert.ToDouble(value) / 10);

    string interval = string.Format("{0:c} - {1:c} ", valueDouble * 10, (valueDouble + 1) * 10);

    if(valueDouble > 9)
    {
        interval = string.Format(">= {0:c} ", 100);
    }

    return interval;
}

#endregion

 

728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요