[DEVEXPRESS/WINFORM] PivotGridControl 클래스 : CreateDrillDownDataSource 메소드를 사용해 기본 데이터 구하기
DevExpress/WinForm 2020. 5. 5. 01:51728x90
반응형
728x170
▶ MainForm.cs
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraPivotGrid;
namespace TestProject
{
/// <summary>
/// 메인 폼
/// </summary>
public partial class MainForm : XtraForm
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 서버 모드
/// </summary>
private bool serverMode = false;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - MainForm()
/// <summary>
/// 생성자
/// </summary>
public MainForm()
{
InitializeComponent();
Load += Form_Load;
this.toggleSwitch.Toggled += toggleSwitch_Toggled;
this.getGrandTotalDataButton.Click += getGrandTotalDataButton_Click;
this.pivotGridControl.CellDoubleClick += pivotGridControl_CellDoubleClick;
}
#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.tableAdapter.Fill(this.nwDataSet.Invoices);
this.linqServerModeSource.QueryableSource = new DataClasses1DataContext().Invoices;
SetPivotGridControlDataSource();
}
#endregion
#region 토글 스위치 토글시 처리하기 - toggleSwitch_Toggled(sender, e)
/// <summary>
/// 토글 스위치 토글시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void toggleSwitch_Toggled(object sender, EventArgs e)
{
ToggleSwitch toggleSwitch = sender as ToggleSwitch;
this.serverMode = toggleSwitch.IsOn;
SetPivotGridControlDataSource();
}
#endregion
#region Get Grand Total Data 버튼 클릭시 처리하기 - getGrandTotalDataButton_Click(sender, e)
/// <summary>
/// Get Grand Total Data 버튼 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void getGrandTotalDataButton_Click(object sender, EventArgs e)
{
PivotDrillDownDataSource dataSource = this.pivotGridControl.CreateDrillDownDataSource();
Form popupForm = GetPopupForm(dataSource);
popupForm.StartPosition = FormStartPosition.CenterParent;
popupForm.ShowDialog(this);
popupForm.Dispose();
}
#endregion
#region 피벗 그리드 컨트롤 셀 더블 클릭시 처리하기 - pivotGridControl_CellDoubleClick(sender, e)
/// <summary>
/// 피벗 그리드 컨트롤 셀 더블 클릭시 처리하기
/// </summary>
/// <param name="sender">이벤트 발생자</param>
/// <param name="e">이벤트 인자</param>
private void pivotGridControl_CellDoubleClick(object sender, PivotCellEventArgs e)
{
PivotDrillDownDataSource dataSource;
if(this.serverMode)
{
dataSource = e.CreateDrillDownDataSource(25, new List<string> { "ShipName" });
}
else
{
dataSource = e.CreateDrillDownDataSource(25);
}
XtraForm popupForm = GetPopupForm(dataSource);
popupForm.StartPosition = FormStartPosition.CenterParent;
popupForm.ShowDialog(this);
popupForm.Dispose();
}
#endregion
//////////////////////////////////////////////////////////////////////////////// Function
#region 피벗 그리드 컨트롤 데이터 소스 설정하기 - SetPivotGridControlDataSource()
/// <summary>
/// 피벗 그리드 컨트롤 데이터 소스 설정하기
/// </summary>
private void SetPivotGridControlDataSource()
{
if(this.serverMode)
{
this.pivotGridControl.DataSource = this.linqServerModeSource;
}
else
{
this.pivotGridControl.DataSource = this.bindingSource;
}
}
#endregion
#region 팝업 폼 구하기 - GetPopupForm(dataSource)
/// <summary>
/// 팝업 폼 구하기
/// </summary>
/// <param name="dataSource">데이터 소스</param>
/// <returns>팝업 폼</returns>
private XtraForm GetPopupForm(PivotDrillDownDataSource dataSource)
{
XtraForm form = new XtraForm();
form.Bounds = new Rectangle(100, 100, 600, 450);
GridControl gridControl = new GridControl();
gridControl.Parent = form;
gridControl.Dock = DockStyle.Fill;
GridView gridView = new GridView();
gridView.OptionsView.ColumnAutoWidth = false;
gridControl.MainView = gridView;
gridControl.DataSource = dataSource;
gridView.Columns["OrderDate"].DisplayFormat.FormatType = FormatType.DateTime;
gridView.BestFitColumns();
form.Text = string.Format("기본 데이터 - {0}건", dataSource.RowCount);
return form;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요