첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using System.Collections.Generic;
using System.Linq;

using DevExpress.XtraEditors;
using DevExpress.XtraTreeList;
using DevExpress.XtraTreeList.Columns;
using DevExpress.XtraTreeList.Nodes;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : XtraForm
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            this.treeList.ShowFindPanel();

            this.treeList.OptionsBehavior.EnableFiltering = true;

            this.treeList.FilterNode += treeList_FilterNode;
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public
        //////////////////////////////////////////////////////////////////////////////// Event

        #region 트리 리스트 노드 필터 설정하기 - treeList_FilterNode(sender, e)

        /// <summary>
        /// 트리 리스트 노드 필터 설정하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void treeList_FilterNode(object sender, FilterNodeEventArgs e)
        {
            List<TreeListColumn> columnList = e.Node.TreeList.Columns.Cast<TreeListColumn>().ToList();

            if(columnList.Count == 0)
            {
                return;
            }

            if(string.IsNullOrEmpty(treeList.FindFilterText))
            {
                return;
            }

            e.Handled = true;

            e.Node.Visible = columnList.Any(c => IsNodeMatchFilter(e.Node, c));

            e.Node.Expanded = e.Node.Visible;
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////// Function

        #region 노드 필터 매칭 여부 구하기 - IsNodeMatchFilter(node, column)

        /// <summary>
        /// 노드 필터 매칭 여부 구하기
        /// </summary>
        /// <param name="node">노드</param>
        /// <param name="column">컬럼</param>
        /// <returns>노드 필터 매칭 여부</returns>
        private bool IsNodeMatchFilter(TreeListNode node, TreeListColumn column)
        {
            string filterValue = this.treeList.FindFilterText.ToLower();

            if(node.GetDisplayText(column).ToLower().Contains(filterValue))
            {
                return true;
            }

            foreach(TreeListNode childNode in node.Nodes)
            {
                if(IsNodeMatchFilter(childNode, column))
                {
                    return true;
                }
            }

            return false;
        }

        #endregion
    }
}
728x90
반응형
그리드형

'DevExpress > WinForm' 카테고리의 다른 글

[DEVEXPRESS/WINFORM] TreeListOptionsColumnFilter 클래스 : PopupExcelFilterNumericValuesTabFilterType 속성을 사용해 팝업 엑셀 필터에서 숫자 값 필터 타입 설정하기  (0) 2020.05.23
[DEVEXPRESS/WINFORM] TreeListOptionsColumnFilter 클래스 : PopupExcelFilterDefaultTab 속성을 사용해 팝업 엑셀 필터 디폴트 탭 설정하기  (0) 2020.05.23
[DEVEXPRESS/WINFORM] TreeListColumn 클래스 : FilterMode 속성을 사용해 디스플레이 텍스트에 해당하는 필터 사용하기  (0) 2020.05.23
[DEVEXPRESS/WINFORM] WindowsFormsSettings 클래스 : ColumnFilterPopupMode 정적 속성을 사용해 클래식 스타일 사용하기  (0) 2020.05.23
[DEVEXPRESS/WINFORM] TreeList 클래스 : CustomRowFilter 이벤트를 사용해 행 필터 커스텀 설정하기  (0) 2020.05.21
[DEVEXPRESS/WINFORM] TreeList 클래스 : FilterNode 이벤트를 사용해 필터 커스텀 설정하기  (0) 2020.05.21
[DEVEXPRESS/WINFORM] TreeList 클래스 : CustomColumnSort 이벤트를 사용해 컬럼 커스텀 정렬하기  (0) 2020.05.21
[DEVEXPRESS/WINFORM] TreeList 클래스 : BeginSort/EndSource 메소드를 사용해 정렬시 불필요한 업데이트 방지하기  (0) 2020.05.20
[DEVEXPRESS/WINFORM] TreeList 클래스 : Sort 메소드를 사용해 컬럼 정렬하기  (0) 2020.05.20
[DEVEXPRESS/WINFORM] TreeListColumn 클래스 : SortOrder 속성을 사용해 컬럼 정렬하기  (0) 2020.05.20
[DEVEXPRESS/WINFORM] TreeList 클래스 : ViewStyle 속성을 사용해 뷰 스타일 설정하기  (0) 2020.05.19
Posted by 사용자 icodebroker

댓글을 달아 주세요