본문 바로가기
소프트웨어/3rd Part

UltraWinGrid Infragistics Netadvantage - FrameWork

by 알 수 없는 사용자 2009. 7. 16.
320x100
# 머리말

WinGrid 를 편리하게 사용하기 위해서 프레임워크로 만들었습니다.
컬럼을 정렬 생성하고, 그리드의 매스크등을 셋팅을 편리하게 할 수 있습니다.

1차 구현 현황
Windows Form UltraWinGrid Infragistics Netadvantage 2008.3 CLR2.0 버전 ver 0.1

1. 컬럼헤더 fix(고정) / 컬럼헤더 스타일 지정 / 이동고정 및 이동가능
2. row numbering 처리
3. 셀 정렬기능
4. 셀 maskedit 처리
* varchar형 무자열 숫자를 maskedit로 원하는 포멧으로 표현
5. 셀 타입지정( 버튼, 콤보, 달력 등)
6. 포멧형 (숫자의경우 글러벌 통화 단위 지정 및 , 자동세팅)
7. 홀수줄 마다 원하는 줄번호 색 세팅
8. 셀 편집여부 지정
9. 엑셀다운로드 기능


# 사용하기

참고링크 : http://cdmanii.tistory.com/684






# 핵심 소스부분

< Using 하기 >
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Infragistics.Win.UltraWinGrid;
using Infragistics.Win;
using System.Drawing;
using Infragistics.Win.UltraWinMaskedEdit;
using System.Globalization;
using System.Data;
using Infragistics.Win.UltraWinGrid.ExcelExport;
using System.IO;



< 그리드의 속성을 지정하기 >

    //================================== Class History Comments ==================================
    // 파  일  명 : GridUtil.cs
    // 최초작성자 : Park Kwang Ho
    // 최초작성일 : 2009.01.15
    // 
    // 수정이력
    // -------------------------------------------------------------------------------------------
    // 수정일       수정자      수정내용
    // -------------------------------------------------------------------------------------------
    //============================================================================================
    /// <summary>
    ///  UltraWinGrid 디자인속성 세팅, Align, 컬럼헤더 지정, 컬럼Span
    /// </summary>

        /// <summary>
        /// Sets the grid format.
        /// </summary>
        /// <param name="winGrid">The win grid.</param>
        /// <param name="gridType">Type of the grid.</param>
        /// <param name="scrollDirection">The scroll direction.</param>
        public static void SetGridFormat(UltraGrid winGrid, string gridType, Scrollbars scrollDirection)
        {
            // 컬럼클리어함
            winGrid.DisplayLayout.ClearGroupByColumns();

            // 컬럼 자동생성 해지
            winGrid.DisplayLayout.NewColumnLoadStyle = NewColumnLoadStyle.Hide;

            // 스크롤바 설정
            winGrid.DisplayLayout.Scrollbars = scrollDirection;

            // 자동컬럼크기
            winGrid.DisplayLayout.AutoFitStyle = AutoFitStyle.ResizeAllColumns;

            // 그리드 캡션 안보이게 설정함
            winGrid.DisplayLayout.CaptionVisible = DefaultableBoolean.False;


            winGrid.DisplayLayout.ColumnChooserEnabled = DefaultableBoolean.True;
            winGrid.DisplayLayout.Bands[0].ExcludeFromColumnChooser = ExcludeFromColumnChooser.True;

            // GroupByBox 설정
            //winGrid.DisplayLayout.GroupByBox.ShowBandLabels = ShowBandLabels.All;
            //winGrid.DisplayLayout.GroupByBox.Prompt = "컬럼 그룹박스 텍스트";
            //winGrid.DisplayLayout.GroupByBox.PromptAppearance.BackColor = Color.Blue;
            winGrid.DisplayLayout.GroupByBox.Hidden = true;

            //TabKey누르면 다음셀로이동 // Set the behaviour of tab keys in the UltraGrid.
            winGrid.DisplayLayout.TabNavigation = TabNavigation.NextCell;
            winGrid.DisplayLayout.Appearance.TextHAlign = HAlign.Left;

            // 헤더 색상설정
            winGrid.DisplayLayout.Override.HeaderAppearance.BackColor = Color.SteelBlue;
            winGrid.DisplayLayout.Override.HeaderAppearance.BackColor2 = Color.SteelBlue;

            winGrid.DisplayLayout.Override.HeaderAppearance.ForeColor = Color.White;
            winGrid.DisplayLayout.Override.HeaderAppearance.FontData.Bold = DefaultableBoolean.True;

            //홀수줄 색깔지정
            winGrid.DisplayLayout.Override.RowAlternateAppearance.BackColor = Color.Snow;

            //헤더속성
            winGrid.DisplayLayout.UseFixedHeaders = true;
            winGrid.DisplayLayout.Bands[0].Override.FixedHeaderIndicator = FixedHeaderIndicator.None;
            //winGrid.DisplayLayout.Override.FixedHeaderAppearance.BackColor = Color.LightYellow;
            //winGrid.DisplayLayout.Override.FixedCellAppearance.BackColor = Color.LightYellow;
            //winGrid.DisplayLayout.Override.FixedCellSeparatorColor = Color.Red;
            winGrid.DisplayLayout.Bands[0].Override.HeaderStyle = HeaderStyle.WindowsXPCommand; //헤더 스타일
            winGrid.DisplayLayout.Bands[0].Override.HeaderAppearance.TextHAlign = HAlign.Center; //헤더정렬: Center


            #region ---- row numbering ----

            // Set the RowSelectorNumberStyle to enable the row-numbers.
            winGrid.DisplayLayout.Override.RowSelectorNumberStyle = RowSelectorNumberStyle.VisibleIndex;

            // You can control the appearance of the row numbers using the RowSelectorAppearance.
            winGrid.DisplayLayout.Override.RowSelectorAppearance.ForeColor = Color.White;
            winGrid.DisplayLayout.Override.RowSelectorAppearance.FontData.Bold = DefaultableBoolean.True;

            // You can explicitly set the width of the row selectors if the default one calculated
            // by the UltraGrid is not enough.
            // 로우넘버링 넓이
            winGrid.DisplayLayout.Override.RowSelectorWidth = 40;


            // RowSelectors indicate whether row selectors are displayed. Each row has a row selector
            // on the left side of the row. It's used to activate and select rows. Row selectors are
            // visible by default, however you can set the RowSelectors property on the override to
            // False to hide the row selectors.
            winGrid.DisplayLayout.Bands[0].Override.RowSelectors = DefaultableBoolean.True;


            // You can use the RowSelectorAppearance property customize the appearance of the row selectors.
            // 색상지정 및 가운데 정렬
            winGrid.DisplayLayout.Override.RowSelectorAppearance.BackColor = Color.SteelBlue;
            winGrid.DisplayLayout.Override.RowSelectorAppearance.BackColor2 = Color.SteelBlue;
            winGrid.DisplayLayout.Override.RowSelectorAppearance.TextHAlign = HAlign.Center;

            // You can override that grid-wide setting for a particular band by setting it on the
            // override of that band.
            //winGrid.DisplayLayout.Bands[1].Override.RowSelectors = DefaultableBoolean.False;
            #endregion


            // Wingrid Unbinding 상태에서는 Row NewAdd()를 할수가 없다. 그래서 빈로우를 바인드 시킴
            // 조회후 Bind된 상태에서는 Row NewAdd()가 가능하다
            DataSet rtnDs = new DataSet();
            rtnDs.Tables.Add("_BlinkTable");
            //ultraGrid1.DisplayLayout.AddNewBox.Hidden = false;  //AddNew 안보이게 설정함
            winGrid.DataSource = rtnDs;
            winGrid.DataBind();





            switch (gridType.ToUpper().ToString())
            {
                case "S":
                    // onserver만 컬럼이동가능
                    // 그리드속성 셀선택만 가능(모든셀 편집막음)
                    winGrid.DisplayLayout.Override.CellClickAction = CellClickAction.CellSelect;
                    winGrid.DisplayLayout.Override.ActiveRowCellAppearance.BackColor = Color.Snow;
                    winGrid.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.Black;

                    break;

                case "E":
                    // 컬럼이동불가능
                    winGrid.DisplayLayout.Override.CellClickAction = CellClickAction.EditAndSelectText;
                    winGrid.DisplayLayout.Override.ActiveCellAppearance.BackColor = Color.Snow;
                    winGrid.DisplayLayout.Override.ActiveCellAppearance.ForeColor = Color.Black;

                    break;

                case "N;":
                    // 컬럼이동불가능

                    break;
            }
        }



< 컬럼 속성을 지정합니다 >
컬럼속성을 아래와 같은 원형이고 소스는  모두 공개하지 않겠습니다.
별거는 아니지만 요청하신 분의 메일이나 블로그 정보가 없어서 모두 공개하지 않겠습니다.
의도를 알려주시면 모두 공개하겠습니다. ^^

아래와 같은 원형으로 오버로드하여 쓰는 방향으로 작성하였습니다.

        public static void SetGridColumnFormat(UltraGrid winGrid, string sColName, string sColKey, string sColType, int pnWidth, HAlign sAlign, Activation AllowUpdate, bool sHidden, bool fixColKey, string sDataMask)
        {




# 추가

인프라로직스의 How-To 를 참고하여 프레임워크를 완성하였습니다.

댓글