검색결과 리스트
.Net/XtraGrid에 해당되는 글 7건
- 2013.01.24 [XtraGrid] XtraGrid Option
- 2012.04.13 [XtraGrid] Online Document
- 2012.04.11 [XtraGrid] Copy & Paste 구현
- 2012.04.08 [XtraGrid] How to make my grid columns read-only
- 2012.04.06 [XtraGrid] Checkbox 구현하기 1
- 2012.04.05 [XtraGrid] Fixed Columns
- 2012.03.28 [XtraGrid] DevExpress XtraGrid
글
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] Online Document (0) | 2012.04.13 |
---|---|
[XtraGrid] Copy & Paste 구현 (0) | 2012.04.11 |
[XtraGrid] How to make my grid columns read-only (0) | 2012.04.08 |
[XtraGrid] Checkbox 구현하기 (1) | 2012.04.06 |
[XtraGrid] Fixed Columns (0) | 2012.04.05 |
트랙백
댓글
글
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] XtraGrid Option (0) | 2013.01.24 |
---|---|
[XtraGrid] Copy & Paste 구현 (0) | 2012.04.11 |
[XtraGrid] How to make my grid columns read-only (0) | 2012.04.08 |
[XtraGrid] Checkbox 구현하기 (1) | 2012.04.06 |
[XtraGrid] Fixed Columns (0) | 2012.04.05 |
트랙백
댓글
글
링크 : http://www.devexpress.com/Support/Center/p/A1266.aspx
Copy 구현 : http://www.devexpress.com/Support/Center/p/A332.aspx
셀렉션 옵션 : http://documentation.devexpress.com/#WindowsForms/CustomDocument711
using System;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Data;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.Utils.Drawing;
namespace KIS.DevExpressHelper
{
public class GridLClipboardHelper
{
private const string CellDelimiter = "\t";
private const string LineDelimiter = "\r\n";
protected GridView _view;
/// 생성자
public GridLClipboardHelper(GridView view)
{
this.View = view;
}
public GridView View
{
get { return _view; }
set
{
if ( _view != value )
{
Detach();
Attach(value);
}
}
}
protected virtual void Attach(GridView view)
{
if ( view == null )
return;
this._view = view;
if ( view.IsMultiSelect == false )
{
view.OptionsSelection.MultiSelect = true;
view.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect;
}
this.View.KeyDown += new KeyEventHandler(View_KeyDown);
}
private bool CompareGrid(GridView srcView, GridView tgtView)
{
int srcCnt = srcView.Columns.Count;
int tgtCnt = tgtView.Columns.Count;
if ( srcView == null || tgtView == null )
{
return false;
}
if ( srcCnt != tgtCnt )
{
return false;
}
for ( int i = 0; i < srcCnt; i++ )
{
if ( srcView.Columns[i].ColumnType != tgtView.Columns[i].ColumnType
|| srcView.Columns[i].FieldName != tgtView.Columns[i].FieldName
)
{
return false;
}
}
return true;
}
void View_KeyDown(object sender, KeyEventArgs e)
{
GridView view = sender as GridView;
// 붙여 넣기
if ( this.CompareGrid(this._view, view) == true && view.IsMultiSelect == true && e.Control == true && e.KeyCode == Keys.V )
{
this.Paste(view);
}
// 복사하기
else if ( this.CompareGrid(this._view, view) == true && view.IsMultiSelect == true && e.Control == true && e.KeyCode == Keys.C )
{
e.SuppressKeyPress = true;
this.Copy(view);
}
// 모두 선택
else if ( this.CompareGrid(this._view, view) == true && view.IsMultiSelect == true && e.Control == true && e.KeyCode == Keys.A )
{
this.SelectAll(view);
}
// 삭제
else if ( this.CompareGrid(this._view, view) == true && view.IsMultiSelect == true && e.KeyCode == Keys.Delete )
{
this.DeleteRows(view);
}
// 오려내기
else if ( this.CompareGrid(this._view, view) == true && view.IsMultiSelect == true && e.Control == true && e.KeyCode == Keys.X )
{
this.Copy(view);
this.DeleteRows(view);
}
}
/// 모두 선택
public void SelectAll(GridView view)
{
view.SelectAll();
}
// 복사하기
public void Copy(GridView view)
{
StringBuilder sb = new StringBuilder();
int columnNameCnt = view.Columns.Count;
for ( int i = 0; i < columnNameCnt; i++ )
{
try
{
sb.Append(view.Columns[i].FieldName.ToString());
}
catch ( ArgumentException )
{
sb.Append("");
}
if ( i+1 < columnNameCnt )
sb.Append(CellDelimiter);
}
sb.Append(LineDelimiter);
int[] rows = view.GetSelectedRows();
int rowsCnt = rows.Length;
for ( int i = 0; i < rowsCnt; i++ )
{
int handle = rows[i];
DataRowView rowView = view.GetRow(handle) as DataRowView;
if ( rowView != null )
{
for ( int j = 0; j < columnNameCnt; j++ )
{
try
{
sb.Append(rowView[view.Columns[j].FieldName].ToString());
}
catch ( ArgumentException )
{
sb.Append("");
}
if ( j+1 < columnNameCnt )
sb.Append(CellDelimiter);
}
}
if ( i+1 < rowsCnt )
sb.Append(LineDelimiter);
}
DataObject data = new DataObject();
data.SetData(DataFormats.Text, sb.ToString());
Clipboard.Clear();
Clipboard.SetDataObject(data, true);
}
// 붙여넣기
public void Paste(GridView view)
{
IDataObject data = Clipboard.GetDataObject();
if ( data.GetDataPresent(DataFormats.Text) == true )
{
view.BeginUpdate();
try
{
string strData = data.GetData(DataFormats.Text) as string;
string[] strRows = strData.Split(new string[] { LineDelimiter }, StringSplitOptions.None);
string[] strColumnNames = strRows[0].Split(new string[] { CellDelimiter }, StringSplitOptions.None);
List< object > list = new List< object >();
int dataCount = strRows.Length-1; // 헤더 개수 제외
int rowHandle = view.FocusedRowHandle;
int targetDeleteRowCount = view.DataRowCount - rowHandle + 1;
if ( rowHandle != GridControl.InvalidRowHandle && rowHandle != GridControl.NewItemRowHandle )
{
// 붙여 넣기할 Row가 현재 선택된 행부터 밑에 행보다 많다.
if ( targetDeleteRowCount > dataCount )
{
for ( int i = rowHandle + dataCount; i < view.DataRowCount; i++ )
{
list.Add(view.GetRow(i));
}
}
// 현재 선택된 행부터 끝까지 삭제한다.
for ( int i = view.DataRowCount-1; i >= rowHandle; i-- )
{
view.DeleteRow(i);
}
}
else if ( rowHandle == GridControl.NewItemRowHandle )
{
view.DeleteRow(rowHandle);
}
for ( int i = 1; i < strRows.Length; i++ )
{
view.AddNewRow();
int handle = view.FocusedRowHandle;
string[] strCells = strRows[i].Split(new string[] { CellDelimiter }, StringSplitOptions.None);
int colCnt = strColumnNames.Length;
for ( int j = 0; j < colCnt; j++ )
{
if ( strColumnNames[j].Trim().Equals("") == false && j < strCells.Length )
{
try
{
Type t = view.Columns[j].ColumnType;
object value = null;
if ( t == typeof(int) )
{
if ( strCells[j] != null && strCells[j].ToString().Equals("") == false )
{
try
{
value = Convert.ToInt32(strCells[j]);
if ( value != null )
view.SetRowCellValue(handle, strColumnNames[j], value);
}
catch ( Exception ex )
{
System.Console.WriteLine(ex.StackTrace);
}
}
}
else if ( t == typeof(DateTime) )
{
if ( strCells[j] != null && strCells[j].ToString().Equals("") == false )
{
try
{
value = Convert.ToDateTime(strCells[j]);
if ( value != null )
view.SetRowCellValue(handle, strColumnNames[j], value);
}
catch ( Exception ex )
{
System.Console.WriteLine(ex.StackTrace);
}
}
}
else if ( t == typeof(string) )
{
if ( strCells[j] != null )
{
try
{
value = Convert.ToString(strCells[j]);
if ( value != null )
view.SetRowCellValue(handle, strColumnNames[j], value);
}
catch ( Exception ex )
{
System.Console.WriteLine(ex.StackTrace);
}
}
}
}
catch ( Exception ex)
{
//MessageBox.Show(ex.Message + "\n\n" + ex.StackTrace);
}
}//if ( strColumnNames[j].Trim().Equals("") == false )
}//for ( int j = 0; j < colCnt; j++ )
}//for ( int i = 1; i < strRows.Length; i++ )
DataView dv = view.DataSource as DataView;
for ( int i = 0; i < list.Count; i++ )
{
DataRowView drv = list[i] as DataRowView;
if ( drv != null )
{
DataRowView newDRV = dv.AddNew();
newDRV.BeginEdit();
try
{
int columNameCount= drv.Row.Table.Columns.Count;
for ( int j = 0; j < columNameCount; j++ )
{
string fieldName = drv.Row.Table.Columns[j].ColumnName;
newDRV[fieldName] = drv[fieldName];
}
newDRV.EndEdit();
}
catch ( Exception )
{
newDRV.CancelEdit();
}
}
}
}
catch ( Exception ex )
{
MessageBox.Show(ex.StackTrace);
}
finally
{
view.EndUpdate();
}
}//if ( data.GetDataPresent(DataFormats.Text) == true )
}
/// 현재 선택된 로우를 삭제한다.
private void DeleteRows(GridView view)
{
view.BeginUpdate();
int[] rows = view.GetSelectedRows();
for ( int i = rows.Length-1; i >= 0 ; i-- )
{
view.DeleteRow(rows[i]);
}
view.EndUpdate();
}
protected virtual void Detach()
{
if ( this._view == null )
return;
this.View.KeyDown -= new KeyEventHandler(View_KeyDown);
_view = null;
}
}
}
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] XtraGrid Option (0) | 2013.01.24 |
---|---|
[XtraGrid] Online Document (0) | 2012.04.13 |
[XtraGrid] How to make my grid columns read-only (0) | 2012.04.08 |
[XtraGrid] Checkbox 구현하기 (1) | 2012.04.06 |
[XtraGrid] Fixed Columns (0) | 2012.04.05 |
트랙백
댓글
글
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] Online Document (0) | 2012.04.13 |
---|---|
[XtraGrid] Copy & Paste 구현 (0) | 2012.04.11 |
[XtraGrid] Checkbox 구현하기 (1) | 2012.04.06 |
[XtraGrid] Fixed Columns (0) | 2012.04.05 |
[XtraGrid] DevExpress XtraGrid (0) | 2012.03.28 |
트랙백
댓글
글
사이트에 있는 예제를 약간 수정했다.
엑셀과 비슷하게 Shift + 클릭으로 범위를 클릭할수 있게 변경했다.
public class GridCheckMarksMultiSelectionHelper
{
private readonly string markFieldName = "CheckMarkSelection";
protected GridView _view;
protected ArrayList selection;
protected GridColumn column;
protected RepositoryItemCheckEdit edit;
protected const int CheckboxIndent = 4;
/// <summary>
/// 생성자
/// </summary>
public GridCheckMarksMultiSelectionHelper()
{
selection = new ArrayList();
}
public GridCheckMarksMultiSelectionHelper(GridView view)
: this()
{
this.View = view;
}
public GridView View
{
get { return _view; }
set
{
if (_view != value)
{
Detach();
Attach(value);
}
}
}
public string MarkFieldName
{
get
{
return this.markFieldName;
}
}
private bool isMultiSelect = false;
public bool IsMultiSelect
{
get
{
return this.isMultiSelect;
}
private set
{
this.isMultiSelect = value;
}
}
public GridColumn CheckMarkColumn { get { return column; } }
public int SelectedCount { get { return selection.Count; } }
public object GetSelectedRow(int index)
{
return selection[index];
}
public int GetSelectedIndex(object row)
{
foreach (object record in selection)
if ((record as DataRowView).Row == (row as DataRowView).Row)
return selection.IndexOf(record);
return selection.IndexOf(row);
}
public void ClearSelection(GridView view)
{
selection.Clear();
Invalidate(view);
}
public void SelectAll(GridView view)
{
selection.Clear();
// fast (won't work if the grid is filtered)
//if(_view.DataSource is ICollection)
// selection.AddRange(((ICollection)_view.DataSource));
//else
// slow:
for (int i = 0; i < view.DataRowCount; i++)
selection.Add(view.GetRow(i));
Invalidate(view);
}
public void SelectGroup(int rowHandle, bool select, GridView view)
{
if (IsGroupRowSelected(rowHandle, view) && select) return;
for (int i = 0; i < view.GetChildRowCount(rowHandle); i++)
{
int childRowHandle = view.GetChildRowHandle(rowHandle, i);
if (view.IsGroupRow(childRowHandle))
SelectGroup(childRowHandle, select, view);
else
SelectRow(childRowHandle, select, false, view);
}
Invalidate(view);
}
void SelectRow(int rowHandle, bool select, bool invalidate, GridView view)
{
if (IsRowSelected(rowHandle, view) == select) return;
object row = view.GetRow(rowHandle);
if (select)
selection.Add(row);
else
selection.Remove(row);
if (invalidate)
{
Invalidate(view);
}
}
void SelectRow(object row, bool select, bool invalidate, GridView view)
{
if (IsRowSelected(row, view) == select) return;
if (select)
selection.Add(row);
else
selection.Remove(row);
if (invalidate)
{
Invalidate(view);
}
}
public void SelectRow(int rowHandle, bool select, GridView view)
{
SelectRow(rowHandle, select, true, view);
}
public void SelectRow(object row, bool select, GridView view)
{
SelectRow(row, select, true, view);
}
public void InvertRowSelection(int rowHandle, GridView view)
{
if (view.IsDataRow(rowHandle))
{
SelectRow(rowHandle, !IsRowSelected(rowHandle, view), view);
}
if (view.IsGroupRow(rowHandle))
{
SelectGroup(rowHandle, !IsGroupRowSelected(rowHandle, view), view);
}
}
public bool IsGroupRowSelected(int rowHandle, GridView view)
{
for (int i = 0; i < view.GetChildRowCount(rowHandle); i++)
{
int row = _view.GetChildRowHandle(rowHandle, i);
if (view.IsGroupRow(row))
{
if (!IsGroupRowSelected(row, view)) return false;
}
else
if (!IsRowSelected(row, view)) return false;
}
return true;
}
public bool IsRowSelected(int rowHandle, GridView view)
{
if (view.IsGroupRow(rowHandle))
return IsGroupRowSelected(rowHandle, view);
object row = view.GetRow(rowHandle);
return GetSelectedIndex(row) != -1;
}
public bool IsRowSelected(object row, GridView view)
{
return GetSelectedIndex(row) != -1;
}
protected virtual void Attach(GridView view)
{
if (view == null) return;
selection.Clear();
this._view = view;
edit = view.GridControl.RepositoryItems.Add("CheckEdit") as RepositoryItemCheckEdit;
column = view.Columns.Add();
column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
column.Visible = true;
column.VisibleIndex = 0;
column.FieldName = this.MarkFieldName;
column.Caption = "Mark";
column.OptionsColumn.ShowCaption = false;
column.OptionsColumn.AllowEdit = false;
column.OptionsColumn.AllowSize = false;
column.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
column.Width = GetCheckBoxWidth();
// 2012-04-05 ADDED BY KDJ
column.Fixed = FixedStyle.Left;
column.ColumnEdit = edit;
view.Click += new EventHandler(View_Click);
view.CustomDrawColumnHeader += new ColumnHeaderCustomDrawEventHandler(View_CustomDrawColumnHeader);
view.CustomDrawGroupRow += new RowObjectCustomDrawEventHandler(View_CustomDrawGroupRow);
view.CustomUnboundColumnData += new CustomColumnDataEventHandler(view_CustomUnboundColumnData);
view.KeyDown += new KeyEventHandler(view_KeyDown);
view.RowStyle += new RowStyleEventHandler(view_RowStyle);
// 2012-04-05 ADDED BY KDJ
view.KeyUp += new KeyEventHandler(view_KeyUp);
view.FocusedRowChanged += new FocusedRowChangedEventHandler(view_FocusedRowChanged);
}
void view_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e)
{
this._view.BeginUpdate();
// 클릭시 현재 Row 선택되게 하는 루틴
//bool isSelection = this.IsRowSelected(row, view);
//this.SelectRow(row, !isSelection, false, view);
if (this.IsMultiSelect == true)
{
int start = 0, end = 0;
if (e.PrevFocusedRowHandle <= e.FocusedRowHandle)
{
start = e.PrevFocusedRowHandle;
end = e.FocusedRowHandle;
}
else
{
start = e.FocusedRowHandle;
end = e.PrevFocusedRowHandle;
}
for (int i = start; i <= end; i++)
{
this.SelectRow(i, true, false, this._view);
}
}
this._view.EndUpdate();
}
public virtual void DetailViewAttach(GridView view)
{
if (view == null) return;
this._view = view;
_view.BeginUpdate();
try
{
column = view.Columns[this.MarkFieldName];
if (column == null)
{
selection.Clear();
edit = view.GridControl.RepositoryItems.Add("CheckEdit") as RepositoryItemCheckEdit;
column = view.Columns.Add();
column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
column.Visible = true;
column.VisibleIndex = 0;
column.FieldName = this.MarkFieldName;
column.Caption = "Mark";
column.OptionsColumn.ShowCaption = false;
column.OptionsColumn.AllowEdit = false;
column.OptionsColumn.AllowSize = false;
column.UnboundType = DevExpress.Data.UnboundColumnType.Boolean;
column.Width = GetCheckBoxWidth();
column.ColumnEdit = edit;
}
edit = view.Columns[this.MarkFieldName].ColumnEdit as RepositoryItemCheckEdit;//view.GridControl.RepositoryItems.Add("CheckEdit") as RepositoryItemCheckEdit;
view.Click += new EventHandler(View_Click);
view.CustomDrawColumnHeader += new ColumnHeaderCustomDrawEventHandler(View_CustomDrawColumnHeader);
view.CustomDrawGroupRow += new RowObjectCustomDrawEventHandler(View_CustomDrawGroupRow);
view.CustomUnboundColumnData += new CustomColumnDataEventHandler(view_CustomUnboundColumnData);
view.KeyDown += new KeyEventHandler(view_KeyDown);
view.RowStyle += new RowStyleEventHandler(view_RowStyle);
// 2012-04-05 ADDED BY KDJ
view.KeyUp += new KeyEventHandler(view_KeyUp);
view.FocusedRowChanged += new FocusedRowChangedEventHandler(view_FocusedRowChanged);
}
finally
{
_view.EndUpdate();
}
}
protected virtual void Detach()
{
if (_view == null) return;
if (column != null)
column.Dispose();
if (edit != null)
{
_view.GridControl.RepositoryItems.Remove(edit);
edit.Dispose();
}
_view.Click -= new EventHandler(View_Click);
_view.CustomDrawColumnHeader -= new ColumnHeaderCustomDrawEventHandler(View_CustomDrawColumnHeader);
_view.CustomDrawGroupRow -= new RowObjectCustomDrawEventHandler(View_CustomDrawGroupRow);
_view.CustomUnboundColumnData -= new CustomColumnDataEventHandler(view_CustomUnboundColumnData);
_view.KeyDown -= new KeyEventHandler(view_KeyDown);
_view.RowStyle -= new RowStyleEventHandler(view_RowStyle);
// 2012-04-05 ADDED BY KDJ
_view.KeyUp -= new KeyEventHandler(view_KeyUp);
_view.FocusedRowChanged -= new FocusedRowChangedEventHandler(view_FocusedRowChanged);
_view = null;
}
public virtual void DetailViewDetach()
{
if (_view == null) return;
_view.Click -= new EventHandler(View_Click);
_view.CustomDrawColumnHeader -= new ColumnHeaderCustomDrawEventHandler(View_CustomDrawColumnHeader);
_view.CustomDrawGroupRow -= new RowObjectCustomDrawEventHandler(View_CustomDrawGroupRow);
_view.CustomUnboundColumnData -= new CustomColumnDataEventHandler(view_CustomUnboundColumnData);
_view.KeyDown -= new KeyEventHandler(view_KeyDown);
_view.RowStyle -= new RowStyleEventHandler(view_RowStyle);
// 2012-04-05 ADDED BY KDJ
_view.KeyUp -= new KeyEventHandler(view_KeyUp);
_view.FocusedRowChanged -= new FocusedRowChangedEventHandler(view_FocusedRowChanged);
_view = null;
}
protected int GetCheckBoxWidth()
{
DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info = edit.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
int width = 0;
GraphicsInfo.Default.AddGraphics(null);
try
{
width = info.CalcBestFit(GraphicsInfo.Default.Graphics).Width;
}
finally
{
GraphicsInfo.Default.ReleaseGraphics();
}
return width + CheckboxIndent * 2;
}
protected void DrawCheckBox(Graphics g, Rectangle r, bool Checked)
{
DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info;
DevExpress.XtraEditors.Drawing.CheckEditPainter painter;
DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;
info = edit.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
painter = edit.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;
info.EditValue = Checked;
info.Bounds = r;
info.CalcViewInfo(g);
args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r);
painter.Draw(args);
args.Cache.Dispose();
}
void Invalidate(GridView view)
{
view.CloseEditor();
view.BeginUpdate();
view.EndUpdate();
}
void view_CustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
{
GridView view = sender as GridView;
if (e.Column.Caption == "Mark")
{
if (e.IsGetData)
e.Value = /*IsRowSelected((view.DataSource as IList)[e.ListSourceRowIndex],view);*/ IsRowSelected(view.GetRowHandle(e.ListSourceRowIndex), view);
else
SelectRow((view.DataSource as IList)[e.ListSourceRowIndex], (bool)e.Value, view);
}
}
void view_KeyDown(object sender, KeyEventArgs e)
{
GridView view = sender as GridView;
if (e.KeyCode == Keys.ShiftKey && this.isMultiSelect == false)
{
this.IsMultiSelect = true;
}
if (view.FocusedColumn.Caption != "Mark" || e.KeyCode != Keys.Space) return;
InvertRowSelection(view.FocusedRowHandle, view);
}
void view_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey & this.isMultiSelect == true)
{
this.isMultiSelect = false;
}
}
void View_Click(object sender, EventArgs e)
{
GridView view = sender as GridView;
GridHitInfo info;
Point pt = view.GridControl.PointToClient(Control.MousePosition);
Point viewOffset = view.GetViewInfo().Bounds.Location;
//pt.Offset(-viewOffset.X, -viewOffset.Y);
info = view.CalcHitInfo(pt);
if (info.Column != null && info.Column.Caption == "Mark")
{
if (info.InColumn)
{
if (SelectedCount == view.DataRowCount)
ClearSelection(view);
else
SelectAll(view);
}
if (info.InRowCell)
{
InvertRowSelection(info.RowHandle, view);
}
}
if (info.InRow && view.IsGroupRow(info.RowHandle) && info.HitTest != GridHitTest.RowGroupButton)
{
InvertRowSelection(info.RowHandle, view);
}
}
void View_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
{
if (e.Column != null && e.Column.Caption == "Mark")
{
GridView view = sender as GridView;
e.Info.InnerElements.Clear();
e.Painter.DrawObject(e.Info);
DrawCheckBox(e.Graphics, e.Bounds, SelectedCount == view.DataRowCount);
e.Handled = true;
}
}
void View_CustomDrawGroupRow(object sender, RowObjectCustomDrawEventArgs e)
{
GridView view = sender as GridView;
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridGroupRowInfo info;
info = e.Info as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridGroupRowInfo;
info.GroupText = " " + info.GroupText.TrimStart();
e.Info.Paint.FillRectangle(e.Graphics, e.Appearance.GetBackBrush(e.Cache), e.Bounds);
e.Painter.DrawObject(e.Info);
Rectangle r = info.ButtonBounds;
r.Offset(r.Width + CheckboxIndent * 2 - 1, 0);
DrawCheckBox(e.Graphics, r, IsGroupRowSelected(e.RowHandle, view));
e.Handled = true;
}
void view_RowStyle(object sender, RowStyleEventArgs e)
{
GridView view = sender as GridView;
if (IsRowSelected(e.RowHandle, view))
{
e.Appearance.BackColor = SystemColors.Highlight;
e.Appearance.ForeColor = SystemColors.HighlightText;
}
}
}
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] Online Document (0) | 2012.04.13 |
---|---|
[XtraGrid] Copy & Paste 구현 (0) | 2012.04.11 |
[XtraGrid] How to make my grid columns read-only (0) | 2012.04.08 |
[XtraGrid] Fixed Columns (0) | 2012.04.05 |
[XtraGrid] DevExpress XtraGrid (0) | 2012.03.28 |
트랙백
댓글
글
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] Online Document (0) | 2012.04.13 |
---|---|
[XtraGrid] Copy & Paste 구현 (0) | 2012.04.11 |
[XtraGrid] How to make my grid columns read-only (0) | 2012.04.08 |
[XtraGrid] Checkbox 구현하기 (1) | 2012.04.06 |
[XtraGrid] DevExpress XtraGrid (0) | 2012.03.28 |
트랙백
댓글
글
* 옵션
링크 : http://blog.naver.com/hiphoptrain?Redirect=Log&logNo=130087380966
* checkbox 구성 하는 방법
링크 : http://www.devexpress.com/Support/Center/KB/p/A371.aspx#E990
'.Net > XtraGrid' 카테고리의 다른 글
[XtraGrid] Online Document (0) | 2012.04.13 |
---|---|
[XtraGrid] Copy & Paste 구현 (0) | 2012.04.11 |
[XtraGrid] How to make my grid columns read-only (0) | 2012.04.08 |
[XtraGrid] Checkbox 구현하기 (1) | 2012.04.06 |
[XtraGrid] Fixed Columns (0) | 2012.04.05 |
RECENT COMMENT