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

728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using System.Collections.Generic;
using System.Windows.Forms;

using DevExpress.Data;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : Form
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 체크 컬럼
        /// </summary>
        private GridColumn checkColumn = null;

        /// <summary>
        /// 체크 딕셔너리
        /// </summary>
        private Dictionary<int, bool> checkDictionary = null;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

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

            this.gridControl.BeginUpdate();

            this.gridView.OptionsView.ShowGroupPanel = false;

            this.gridControl.DataSource = SampleData.GetData(100);

            AddCheckColumn();

            this.gridControl.EndUpdate();
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private
        //////////////////////////////////////////////////////////////////////////////// Event

        #region 그리드 뷰 언바운드 컬럼 데이터 커스텀 설정하기 - gridView_CustomUnboundColumnData(sender, e)

        /// <summary>
        /// 그리드 뷰 언바운드 컬럼 데이터 커스텀 설정하기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void gridView_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
        {
            if(e.Column.FieldName == "CHECK")
            {
                if(e.IsGetData)
                {
                    if(this.checkDictionary.ContainsKey(e.ListSourceRowIndex))
                    {
                        e.Value = this.checkDictionary[e.ListSourceRowIndex];
                    }
                    else
                    {
                        e.Value = false;
                    }
                }

                if(e.IsSetData)
                {
                    if(this.checkDictionary.ContainsKey(e.ListSourceRowIndex))
                    {
                        this.checkDictionary[e.ListSourceRowIndex] = (bool)e.Value;
                    }
                    else
                    {
                        this.checkDictionary.Add(e.ListSourceRowIndex, (bool)e.Value);
                    }
                }
            }
        }

        #endregion

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

        #region 체크 컬럼 추가하기 - AddCheckColumn()

        /// <summary>
        /// 체크 컬럼 추가하기
        /// </summary>
        private void AddCheckColumn()
        {
            this.checkColumn = new GridColumn();

            this.checkColumn.FieldName    = "CHECK";
            this.checkColumn.UnboundType  = UnboundColumnType.Boolean;
            this.checkColumn.ColumnEdit   = new RepositoryItemCheckEdit();
            this.checkColumn.VisibleIndex = 2;

            this.gridView.Columns.Add(this.checkColumn);

            this.checkDictionary = new Dictionary<int, bool>();

            this.gridView.CustomUnboundColumnData += gridView_CustomUnboundColumnData;
        }

        #endregion
    }
}
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요