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

■ PopupContainerEdit 클래스 : 편집 가능한 그리드 룩업 에디터 모방하기

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


TestProject.zip


MainForm.cs

 

 

using System;

using System.Data;

 

using DevExpress.XtraEditors;

using DevExpress.XtraEditors.Controls;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : XtraForm

    {

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

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

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

 

            Load += Form_Load;

        }

 

        #endregion

 

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

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

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

 

        #region 폼 로드시 처리하기 - Form_Load(sender, e)

 

        /// <summary>

        /// 폼 로드시 처리하기

        /// </summary>

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

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

        private void Form_Load(object sender, EventArgs e)

        {

            this.gridControl.DataSource = GetDataTable();

 

            this.controlNavigator.NavigatableControl = this.gridControl;

 

            this.popupContainerControl.Controls.Add(this.gridControl     );

            this.popupContainerControl.Controls.Add(this.controlNavigator);

 

            this.popupContainerEdit.Properties.ShowPopupCloseButton = false;

            this.popupContainerEdit.Properties.PopupControl         = this.popupContainerControl;

 

            this.popupContainerEdit.QueryResultValue += popupContainerEdit_QueryResultValue;

            this.popupContainerEdit.QueryDisplayText += popupContainerEdit_QueryDisplayText;

        }

 

        #endregion

        #region 팝업 컨테이너 에디터 결과 값 질의시 처리하기 - popupContainerEdit_QueryResultValue(sender, e)

 

        /// <summary>

        /// 팝업 컨테이너 에디터 결과 값 질의시 처리하기

        /// </summary>

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

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

        private void popupContainerEdit_QueryResultValue(object sender, QueryResultValueEventArgs e)

        {

            e.Value = this.gridView.GetFocusedRowCellValue("Fruit");

        }

 

        #endregion

        #region 팝업 컨테이너 에디터 디스플레이 텍스트 질의하기 - popupContainerEdit_QueryDisplayText(sender, e)

 

        /// <summary>

        /// 팝업 컨테이너 에디터 디스플레이 텍스트 질의하기

        /// </summary>

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

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

        private void popupContainerEdit_QueryDisplayText(object sender, QueryDisplayTextEventArgs e)

        {

            e.DisplayText = e.EditValue != null ? e.EditValue.ToString() : string.Empty;

        }

 

        #endregion

 

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

 

        #region 데이터 테이블 구하기 - GetDataTable()

 

        /// <summary>

        /// 데이터 테이블 구하기

        /// </summary>

        /// <returns>데이터 테이블</returns>

        private DataTable GetDataTable()

        {

            DataTable  table = new DataTable();

            DataColumn column;

            DataRow    row;

 

            column = new DataColumn();

 

            column.ColumnName = "ID";

            column.DataType   = typeof(int);

 

            table.Columns.Add(column);

 

            column = new DataColumn();

 

            column.ColumnName = "Fruit";

            column.DataType   = typeof(string);

 

            table.Columns.Add(column);

 

            row = table.NewRow();

 

            row["ID"   ] = "1";

            row["Fruit"] = "Apple";

 

            table.Rows.Add(row);

 

            row = table.NewRow();

 

            row["ID"   ] = "2";

            row["Fruit"] = "Banana";

 

            table.Rows.Add(row);

 

            row = table.NewRow();

 

            row["ID"   ] = "3";

            row["Fruit"] = "Peach";

 

            table.Rows.Add(row);

 

            return table;

        }

 

        #endregion

    }

}

 

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

Posted by 사용자 icodebroker

댓글을 달아 주세요