SHIN
gridView1.OptionsBehavior.AutoPopulateColumns = false;직접 컬럼을 구성하는 게 유지보수에 좋습니다
gridView1.OptionsBehavior.Editable = false;
gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;gridView1.CustomDrawRowIndicator += (s, e) =>
{
if (e.Info.IsRowIndicator && e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
};
gridView1.IndicatorWidth = 50;특정 컬럼 숨기기
gridView1.Columns["ID"].Visible = false;gridView1.Columns["Price"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
gridView1.Columns["Price"].DisplayFormat.FormatString = "n0";gridView1.Columns["RegDate"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
gridView1.Columns["RegDate"].DisplayFormat.FormatString = "yyyy-MM-dd";gridView1.BeginUpdate();
try
{
gridControl1.DataSource = dataTable;
}
finally
{
gridView1.EndUpdate();
}컬럼 설정도 BeginUpdate() 안에서 처리하는 게 좋습니다.
gridControl1.DataSource = dt;
gridView1.BestFitColumns();단, 데이터가 많을 때 BestFitColumns()는 느릴 수 있으므로 주의하세요.
gridView1.OptionsView.ColumnAutoWidth = false;RepositoryItemButtonEdit btn = new RepositoryItemButtonEdit();
btn.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
btn.Buttons[0].Caption = "선택";
btn.ButtonClick += (s, e) =>
{
int rowHandle = gridView1.FocusedRowHandle;
var value = gridView1.GetRowCellValue(rowHandle, "ID");
MessageBox.Show(value.ToString());
};
gridControl1.RepositoryItems.Add(btn);
gridView1.Columns["ButtonColumn"].ColumnEdit = btn;layoutControl1.AllowCustomization = false;사용자가 런타임에 레이아웃을 변경하지 못하게 막을 수 있습니다.
lookUpEdit1.Properties.DataSource = dt;
lookUpEdit1.Properties.DisplayMember = "Name";
lookUpEdit1.Properties.ValueMember = "Code";
lookUpEdit1.Properties.NullText = "";
lookUpEdit1.Properties.ShowHeader = false;var code = lookUpEdit1.EditValue;SplashScreenManager.ShowDefaultWaitForm("조회 중", "잠시만 기다려주세요...");
try
{
// 오래 걸리는 작업
}
finally
{
SplashScreenManager.CloseDefaultWaitForm();
}this.Invoke(new Action(() =>
{
gridControl1.DataSource = dt;
}));또는 :
if (this.InvokeRequired)
{
this.Invoke(new Action(() => gridControl1.DataSource = dt));
}
else
{
gridControl1.DataSource = dt;
}gridView1.RowStyle += (s, e) =>
{
if (e.RowHandle >= 0)
{
var status = gridView1.GetRowCellValue(e.RowHandle, "Status")?.ToString();
if (status == "완료")
{
e.Appearance.BackColor = Color.LightGreen;
}
}
};if (gridView1.FocusedRowHandle < 0)
return;삭제, 그룹 행, 필터 행에서는 RowHandle이 음수일 수 있습니다. 값 가져올 때도 null 체크하세요.
var value = gridView1.GetRowCellValue(rowHandle, "ColumnName");
if (value == null || value == DBNull.Value)
return;추천 기본 세팅
gridView1.OptionsBehavior.Editable = false;
gridView1.OptionsView.ShowGroupPanel = false;
gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
gridView1.OptionsView.ColumnAutoWidth = false;
gridView1.OptionsView.ShowAutoFilterRow = true;WinForms에서 DevExpress를 쓴다면 GridControl, LayoutControl, LookUpEdit, XtraMessageBox, SplashScreenManager 이 5개를 잘 쓰는 게 핵심입니다.