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

728x90
반응형

■ GridLookUpEdit 클래스 : 커스텀 컨트롤 사용하기

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


TestProject.zip


CustomRepositoryItemGridLookUpEdit.cs

 

 

using System.Data;

using System.Drawing;

 

using DevExpress.XtraEditors.Drawing;

using DevExpress.XtraEditors.Registrator;

using DevExpress.XtraEditors.Repository;

using DevExpress.XtraEditors.ViewInfo;

using DevExpress.XtraGrid.Columns;

using DevExpress.XtraGrid.Views.Grid;

 

namespace TestProject

{

    /// <summary>

    /// 커스텀 저장소 항목 그리드 룩업 에디터

    /// </summary>

    [UserRepositoryItem("Register")]

    public class CustomRepositoryItemGridLookUpEdit : RepositoryItemGridLookUpEdit

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

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

 

        #region Field

 

        /// <summary>

        /// 에디터명

        /// </summary>

        public const string EditorName = "CustomGridLookUpEdit";

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

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

 

        #region 에디터 타입명 - EditorTypeName

 

        /// <summary>

        /// 에디터 타입명

        /// </summary>

        public override string EditorTypeName

        {

            get

            {

                return EditorName;

            }

        }

 

        #endregion

 

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

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 생성자 - CustomRepositoryItemGridLookUpEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        static CustomRepositoryItemGridLookUpEdit()

        {

            Register();

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

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

 

        #region 생성자 - CustomRepositoryItemGridLookUpEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public CustomRepositoryItemGridLookUpEdit()

        {

        }

 

        #endregion

 

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

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 등록하기 - Register()

 

        /// <summary>

        /// 등록하기

        /// </summary>

        public static void Register()

        {

            Image image = null;

 

            EditorRegistrationInfo.Default.Editors.Add

            (

                new EditorClassInfo

                (

                    EditorName,

                    typeof(CustomGridLookUpEdit),

                    typeof(CustomRepositoryItemGridLookUpEdit),

                    typeof(GridLookUpEditBaseViewInfo),

                    new ButtonEditPainter(),

                    true,

                    image

                )

            );

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

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

 

        #region 할당하기 - Assign(item)

 

        /// <summary>

        /// 할당하기

        /// </summary>

        /// <param name="item">저장소 항목</param>

        public override void Assign(RepositoryItem item)

        {

            BeginUpdate();

 

            try

            {

                base.Assign(item);

 

                CustomRepositoryItemGridLookUpEdit source = item as CustomRepositoryItemGridLookUpEdit;

 

                if(source == null)

                {

                    return;

                }

            }

            finally

            {

                EndUpdate();

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////// Protected

 

        #region 로드시 처리하기 - OnLoaded()

 

        /// <summary>

        /// 로드시 처리하기

        /// </summary>

        protected override void OnLoaded()

        {

            base.OnLoaded();

 

            if(IsDesignMode)

            {

                return;

            }

 

            GridColumn idColumn = new GridColumn();

 

            idColumn.FieldName    = idColumn.Caption = "ID";

            idColumn.VisibleIndex = 0;

 

            GridColumn nameColumn = new GridColumn();

 

            nameColumn.FieldName    = nameColumn.Caption = "Name";

            nameColumn.VisibleIndex = 1;

 

            GridView gridView = View;

 

            gridView.Columns.Clear();

 

            gridView.Columns.Add(idColumn  );

            gridView.Columns.Add(nameColumn);

 

            gridView.OptionsView.ShowGroupPanel = true;

 

            ValueMember   = "ID";

            DisplayMember = "Name";

 

            DataSource = GetDataTable();

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////// Protected

 

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

 

        /// <summary>

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

        /// </summary>

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

        private DataTable GetDataTable()

        {

            DataTable table = new DataTable();

 

            table.Columns.Add(new DataColumn("ID"  , typeof(int   )));

            table.Columns.Add(new DataColumn("Name", typeof(string)));

 

            table.Rows.Add(new object[] { 0, "A" });

            table.Rows.Add(new object[] { 1, "B" });

            table.Rows.Add(new object[] { 2, "C" });

 

            return table;

        }

 

        #endregion

    }

}

 

 

CustomGridLookUpEdit.cs

 

 

using System.ComponentModel;

 

using DevExpress.XtraEditors;

 

namespace TestProject

{

    /// <summary>

    /// 커스텀 그리드 룩업 에디터

    /// </summary>

    public class CustomGridLookUpEdit : GridLookUpEdit

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

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

 

        #region 에디터 타입명 - EditorTypeName

 

        /// <summary>

        /// 에디터 타입명

        /// </summary>

        public override string EditorTypeName

        {

            get

            {

                return CustomRepositoryItemGridLookUpEdit.EditorName;

            }

        }

 

        #endregion

        #region 속성 - Properties

 

        /// <summary>

        /// 속성

        /// </summary>

        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

        public new CustomRepositoryItemGridLookUpEdit Properties

        {

            get

            {

                return base.Properties as CustomRepositoryItemGridLookUpEdit;

            }

        }

 

        #endregion

 

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

        ////////////////////////////////////////////////////////////////////////////////////////// Static

 

        #region 생성자 - CustomGridLookUpEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        static CustomGridLookUpEdit()

        {

            CustomRepositoryItemGridLookUpEdit.Register();

        }

 

        #endregion

 

        ////////////////////////////////////////////////////////////////////////////////////////// Instance

 

        #region 생성자 - CustomGridLookUpEdit()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public CustomGridLookUpEdit()

        {

        }

 

        #endregion

    }

}

 

 

MainForm.cs

 

 

using DevExpress.XtraEditors;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : XtraForm

    {

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

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

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

        }

 

        #endregion

    }

}

 

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

728x90
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요