첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ GridView 클래스 : 그룹 자식 행 리스트 구하기

------------------------------------------------------------------------------------------------------------------------


TestProject.zip


MainForm.cs

 

 

using System;

using System.Collections.Generic;

using System.Windows.Forms;

 

using DevExpress.Utils;

using DevExpress.XtraEditors;

using DevExpress.XtraGrid;

using DevExpress.XtraGrid.Views.Grid;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : XtraForm

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            this.gridView.InitializeView

            (

                true,                           // Multi Select

                GridMultiSelectMode.CellSelect, // Grid Multi Select Mode

                DrawFocusRectStyle.CellFocus,   // Draw Focus Rect Style

                true,                           // Show Indicator

                true,                           // Show Column Headers

                true,                           // Allow Column Moving

                true,                           // Allow Column Resizing

                true,                           // Allow Filter

                true,                           // Allow Sort

                false,                          // Allow Cell Merge

                EditorShowMode.Default,         // Editor Show Mode

                true                            // Editable

            );

 

            this.gridView.OptionsBehavior.AutoPopulateColumns = true;

 

            this.gridView.OptionsBehavior.AutoExpandAllGroups = true;

 

            this.gridView.OptionsView.ShowGroupPanel = true;

 

            this.gridView.OptionsView.ShowGroupedColumns = true;

 

            this.gridControl.DataSource = new nwindDataSetTableAdapters.ProductsTableAdapter().GetData();

 

            this.gridView.Columns["CategoryID"].SortMode = ColumnSortMode.Custom;

 

            this.gridView.Columns["CategoryID"].GroupIndex = 0;

 

            this.gridView.BestFitColumns();

 

            this.checkButton.Click += checkButton_Click;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 자식 행 조사 버튼 클릭시 처리하기 - checkButton_Click(sender, e)

 

        /// <summary>

        /// 자식 행 조사 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void checkButton_Click(object sender, EventArgs e)

        {

            int rowHandle = this.gridView.FocusedRowHandle;

 

            if(gridView.IsGroupRow(rowHandle))

            {

                List<object> childRowList = new List<object>();

 

                SetChildRowList(gridView, rowHandle, childRowList);

 

                XtraMessageBox.Show

                (

                    this,

                    childRowList.Count.ToString(),

                    "INFORMATION",

                    MessageBoxButtons.OK,

                    MessageBoxIcon.Information

                );

            }

        }

 

        #endregion

 

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

 

        #region 자식 행 리스트 설정하기 - SetChildRowList(gridView, groupRowHandle, childRowList)

 

        /// <summary>

        /// 자식 행 리스트 설정하기

        /// </summary>

        /// <param name="gridView">그리드 뷰</param>

        /// <param name="groupRowHandle">그룹 행 핸들</param>

        /// <param name="childRowList">자식 행 리스트</param>

        private void SetChildRowList(GridView gridView, int groupRowHandle, List<object> childRowList)

        {

            if(!gridView.IsGroupRow(groupRowHandle))

            {

                return;

            }

 

            int childRowCount = gridView.GetChildRowCount(groupRowHandle);

 

            for(int i = 0; i < childRowCount; i++)

            {

                int childRowHandle = gridView.GetChildRowHandle(groupRowHandle, i);

 

                if(gridView.IsGroupRow(childRowHandle))

                {

                    SetChildRowList(gridView, childRowHandle, childRowList);

                }

                else

                {

                    object childRow = gridView.GetRow(childRowHandle);

 

                    if(!childRowList.Contains(childRow))

                    {

                        childRowList.Add(childRow);

                    }

                }

            }

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요