반응형
    
    
    
  1. AdvBandedGridView Multi Line(멀티라인) 표시
- GridView에서 멀티라인 표시를 위해서는 AdvBandedGridView 로 변환해서 사용하면 쉽게 해결되어 샘플을 만들어 보았습니다.
- 아래화면은 테스트 실행 결과입니다.
- 이미지는 없어 표시가 않되는데 직접넣어서 표시시할수 있으니 소스를 참조해 보시기 바랍니다.

2. 소스 내역
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.Utils;
using DevExpress.XtraGrid.Views.BandedGrid;
namespace WinFormTest
{
    public partial class Form1 : Form
    {
        private AdvBandedGridView advView = new AdvBandedGridView();
        public Form1()
        {
            InitializeComponent();
            // 기존 GridView 에서 AdvBandedGridView 로 변환하는 Script
            gridControl1.MainView.Dispose();
            advView.OptionsBehavior.AutoPopulateColumns = false;
            advView.OptionsView.ShowColumnHeaders = false;
            gridControl1.MainView = advView;
            // 기초자료 생성
            gridControl1.DataSource = GetSampleDataTable();
            // 초기화면
            initDisplay();
        }
        private void initDisplay()
        {
            // 1. 메인 해더 선언 처리
            GridBand bandLineCd = new GridBand() { Caption = "코드" };
            GridBand bandLineNm = new GridBand() { Caption = "명" };
            GridBand bandLineTp = new GridBand() { Caption = "종류" };
            GridBand bandJob1 = new GridBand() { Caption = "작업1" };
            GridBand bandJob2 = new GridBand() { Caption = "작업2" };
            GridBand bandJob3 = new GridBand() { Caption = "작업3" };
            GridBand bandStatus = new GridBand() { Caption = "상태" };
            advView.Bands.Clear();
            advView.Bands.AddRange(new GridBand[] { bandLineCd, bandLineNm, bandLineTp, bandJob1, bandJob2, bandJob3, bandStatus });
            // 2. 내역 표시 List 처리
            BandedGridColumn bgLineCode = new BandedGridColumn() { FieldName = "work_code", Width = 100, Visible = true };
            BandedGridColumn bgLineName = new BandedGridColumn() { FieldName = "work_name", Width = 200, Visible = true };
            BandedGridColumn bgLineType = new BandedGridColumn() { FieldName = "work_type", Visible = true };
            BandedGridColumn bgJobName1 = new BandedGridColumn() { FieldName = "job_name1", Width = 100, Visible = true };
            BandedGridColumn bgJobImage1 = new BandedGridColumn() { FieldName = "job_image1", Visible = true };
            BandedGridColumn bgJobName2 = new BandedGridColumn() { FieldName = "job_name2", Width = 100, Visible = true };
            BandedGridColumn bgJobImage2 = new BandedGridColumn() { FieldName = "job_image2", Visible = true };
            BandedGridColumn bgJobName3 = new BandedGridColumn() { FieldName = "job_name3", Width = 100, Visible = true };
            BandedGridColumn bgJobImage3 = new BandedGridColumn() { FieldName = "job_image3", Visible = true };
            BandedGridColumn bgLineStatus = new BandedGridColumn() { FieldName = "work_status", Visible = true };
            // 3. 내역 컬럼 연결 표시 처리 (1번과 2번 연결 선언)
            bgLineCode.OwnerBand = bandLineCd;
            bgLineName.OwnerBand = bandLineNm;
            bgLineType.OwnerBand = bandLineTp;
            bgJobName1.OwnerBand = bandJob1;
            bgJobImage1.OwnerBand = bandJob1;
            bgJobName2.OwnerBand = bandJob2;
            bgJobImage2.OwnerBand = bandJob2;
            bgJobName3.OwnerBand = bandJob3;
            bgJobImage3.OwnerBand = bandJob3;
            bgLineStatus.OwnerBand = bandStatus;
            // 4. 내역 컬럼 2줄 표시(위치 지정)
            // -- SetColumnPosition(band컬럼, 위치(행), 순서(열));
            advView.SetColumnPosition(bgJobImage1, 0, 0);
            advView.SetColumnPosition(bgJobName1, 1, 0);
            advView.SetColumnPosition(bgJobImage2, 0, 1);
            advView.SetColumnPosition(bgJobName2, 1, 1);
            advView.SetColumnPosition(bgJobImage3, 0, 2);
            advView.SetColumnPosition(bgJobName3, 1, 2);
            advView.RowHeight = 20;  // 5. 전체 행 높이(Height) Size
            bgLineCode.AutoFillDown = true;
            bgLineName.AutoFillDown = true;
            bgLineType.AutoFillDown = true;
            bgJobImage1.RowCount = 3;   // 6. 컬럼 높이(Height) 3줄 높이
            bgJobImage2.RowCount = 3;
            bgJobImage3.RowCount = 3;
            bgLineStatus.AutoFillDown = true;
            // 7. Header 및 컬럼내용 가운데 정렬 샘플
            bandLineCd.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
            bgLineCode.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center;
            bgLineCode.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
        }
        private DataTable GetSampleDataTable()
        {
            DataTable table = new DataTable();
            table.Columns.Add(new DataColumn("work_code", typeof(string)));
            table.Columns.Add(new DataColumn("work_name", typeof(string)));
            table.Columns.Add(new DataColumn("work_type", typeof(string)));
            table.Columns.Add(new DataColumn("job_name1", typeof(string)));
            table.Columns.Add(new DataColumn("job_image1", typeof(Image)));
            table.Columns.Add(new DataColumn("job_name2", typeof(string)));
            table.Columns.Add(new DataColumn("job_image2", typeof(Image)));
            table.Columns.Add(new DataColumn("job_name3", typeof(string)));
            table.Columns.Add(new DataColumn("job_image3", typeof(Image)));
            table.Columns.Add(new DataColumn("work_status", typeof(bool)));
            Random random = new Random(DateTime.Now.Millisecond);
            DataRow row;
            for (int i = 1; i <= 100; i++)
            {
                string workCode = i.ToString("N0");
                string workName = string.Format("이름 {0}", workCode);
                string workType = string.Format("구분 {0}", workCode);
                string jobName1 = string.Format("Job-1 {0}", workCode);
                string jobName2 = string.Format("Job-2 {0}", workCode);
                string jobName3 = string.Format("Job-3 {0}", workCode);
                row = table.NewRow();
                row["work_code"] = workCode;
                row["work_name"] = workName;
                row["work_type"] = workType;
                row["job_name1"] = jobName1;
                row["job_name2"] = jobName2;
                row["job_name3"] = jobName3;
                row["work_status"] = true;
                table.Rows.Add(row);
            }
            return table;
        }
    }
}
3. 추가 설명
- 소스에서 6번 사항을 보시면 컬럼 높이에 RowCount가 있습니다.
- 3은 다른 행 높이 보다 3배 크게 한다는 것입니다.
// 6. 컬럼 높이(Height) 3줄 높이
bgJobImage1.RowCount = 3;
- 컬럼표시 정렬을 위해 7번 샘플로 넣었습니다. (필요시 추가해서 사용)
 // 7. Header 및 컬럼내용 가운데 정렬 샘플 
 bandLineCd.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center; 
 bgLineCode.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center; 
 bgLineCode.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
반응형
    
    
    
  '개발(IT) > DevExpress(WinForm)' 카테고리의 다른 글
| [GridView] 체크박스(CheckBox)로 사용시 SelectionChanged 처리 (0) | 2023.10.18 | 
|---|---|
| [GridView] GridView 파일저장 - 엑셀(xlsx) (1) | 2023.10.18 | 
| [GridView] GridView에서 AdvBandedGridView Script 변환 (0) | 2023.09.28 | 
| [GridView] Column에 ComboBox(콤보박스) 넣기 #2 (0) | 2023.09.17 | 
| [GridView] Column에 ComboBox(콤보박스) 넣기 #1 (0) | 2023.09.17 |