DevExpress&UI

[BandedGridView] 밴드에 정렬이벤트부여 및 필터링(결과내 검색)

Code GGOON 2019. 10. 11. 15:28
반응형

일반 GridControl에서 컬럼헤드에는 기본적으로 정렬과 필터링이 적용되어 있으나,

BandedGridControl, AdvBandedGridControl 의 밴드에는 정렬이나 필터링이 기본적용되어 있지 않다.

 

1. 필터링 기능 제공방법

 

상당의 리본메뉴나 기타버튼을 통해 필터기능(속성)을 끄고, 켤 수 있다.

private void Btn_InnerSearch_ItemClick(object sender, ItemClickEventArgs e)
{
	Grv1.OptionView.ShowAutoFilterRow = !Grv1.OptionView.ShowAutoFilterRow;
}

 

이렇게 버튼에 간단히 이벤트를 부여해서 해당 밴드그리드뷰의 필터기능을 활성화해서 사용 할 수 있다.

 

 

2. 밴드에 정렬기능 부여

 

'그리드컬럼헤드'와 다르게 밴드(Band)을 컬럼헤드에는 기존적으로 정렬과 내부검색 기능이 제공되지 않는다.

그래서 만약 밴드를 '클릭(Click)'시 해당 컬럼(Column)기준으로 정렬이 되는 기능을 원한다면 소스코드를 통해 클릭이벤트에 추가적인 기능부여를 해줘야 한다.

 

-- 기본 참조 생량 --
using DevExpress.Data;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.BandedGrid;
using DevExpress.XtraGrid.BandedGrid.ViewInfo;


-- 기타코드 생략 --

ColumnSortOrder order = ColumnSortOrder.None;

private ColumnSortOrder GetNextSortOrder()
{
	switch(order)
    {
    	case ColumnSortOrder.None: return ColumnSortOrder.Ascending;
        case ColumnSortOrder.Descending: return ColumnSortOrder.Ascending;
        case ColumnSortOrder.Ascending: return ColumnSortOrder..Descending;
    }
    
    return ColumnSortOrder.None;
}


private void Grv_Click(object sender, EventArgs e)
{
	MouseEventArgs args = e as MouseEventArgs;
    BandedGridView view = sender as BandedGridView;
    BandedGridHitInfo info = view.CalcHitInfo(args.Location);
    
    if(info != null && info.InBandPanel)
    {
    	if(info.Band.Name.Equals("gridBand1"))
        {
        	order = GetNextSortOrder();
            view.SortInfo.Clear();
            view.SortInfo.AddRange(new GridColumnSortInfo[] {
            	new GridColumnSortInfo(bandedGridColumn1, order)
            });
        }
    }
}
반응형