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)
});
}
}
}
반응형