본문 바로가기

C#

[220327] GridControl

devexpress GridControl 사용

 

그리드

 

  • 열 그룹화 옵션을 false로 두지 않으면 컬럼명 위의 헤더 부분에 열을 드래그해서 옮기면 그룹화된다는 영어 뜸
  • groupPannal 택스트로 헤더부분에 텍스트 넣을 수 있음
  • 오른쪽 상단의 검색아이콘을 통해 그리드 컨트롤 데이터 검색 가능 (대소문자 구별하지않음)
  • json으로 넘어온 데이터를 역직렬화해서 바로 DataSource 로 바인딩해도 GridView 객체를 통해 컬럼명을 임의로 바꿀 수 있음 (Gridview.Columns[i].name)

 

using DevExpress.XtraGrid.Views.Grid;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFormsControlLibraryGrid
{
    public partial class UserControl1 : UserControl
    {
        GridView view;

        public UserControl1()
        {
            InitializeComponent();
            view = gridControl.FocusedView as GridView;
            view.GroupPanelText = " ";
        }

        public void Display()
        {
            string dataList = HttpRequest.GetRawDataList();
            dynamic dynamicObject = JsonConvert.DeserializeObject(dataList);
  
            gridControl.DataSource = dynamicObject;
            gridControl.ForceInitialize();

            view.PopulateColumns();
            //그룹 패널의 열 그룹화 옵션 false 
            GridOptionsMenu optionsMenu = new GridOptionsMenu();
            optionsMenu.EnableGroupPanelMenu = false;

            view.OptionsView.ShowGroupPanel = true;
            //view.GroupPanelText = " "; //생성자에서 초기화
            
            string[] name = { "Measure Time", "Wafer Number", "Actual Value", "Predict Value", "Accuracy", "Lot ID" };
            for (int i = 0; i < view.Columns.Count; i++)
            {
                view.Columns[i].Caption = name[i];
            }
        }
    }
    
}

 

 

정리 전 

using DevExpress.XtraGrid.Views.Grid;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WinFormsControlLibraryGrid
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
            Display();
        }

        public void Display()
        {
            string dataList = HttpRequest.GetRawDataList();
            //Console.WriteLine("결과>" + dataList);
            //바인딩 json ->net
            dynamic dynamicObject = JsonConvert.DeserializeObject(dataList);
            /*var utf8Reader = new Utf8JsonReader();
            dynamic dynamicObject =
                System.Text.Json.JsonSerializer.Deserialize<dynamic>(empList);
            */
            //DataTable dt = new DataTable();
            //dt.Columns.Add("Time", typeof(string));

            //Console.WriteLine("역직렬화후>" + dynamicObject.ToString());
            //JObject.Parse();
            //dynamicObject.Add("abcdeff", typeof(string));
            gridControl.DataSource = dynamicObject;
            gridControl.ForceInitialize();
            GridView view = gridControl.FocusedView as GridView;
            view.PopulateColumns();
            view.OptionsView.ShowGroupPanel = false;
            string[] name = { "Measure Time", "Wafer Number", "Actual Value", "Predict Value", "Accuracy", "Lot ID" };
            for (int i = 0; i < view.Columns.Count; i++)
            {
                view.Columns[i].Caption = name[i];
            }
        }

        /*public static void Main()
        {
            UserControl1 u = new UserControl1();
            Console.WriteLine(u);
            Console.ReadLine();
        }*/
    }
    
}