GridControl全选功能
GridView里面有一列定义为CheckEdit,FieldName为isChecked,数据源里面有isChecked属性
/// <summary>
/// 实现全选功能
/// </summary>
private bool m_checkStatus = false;
构造函数里面写
//自己定义的GridControl里的GridView(t_gvTemplate)
this.t_gvTemplate.Click+= new System.EventHandler(this.gridView1_Click);
this.t_gvTemplate.CustomDrawColumnHeader+= new DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventHandler(this.gridView1_CustomDrawColumnHeader);
this.t_gvTemplate.DataSourceChanged+= new EventHandler(gridView1_DataSourceChanged);
this.t_gvTemplate.OptionsBehavior.Editable= true;
#region GridControl 全选
private void gridView1_Click(objectsender, EventArgs e)
{
if(ClickGridCheckBox(this.t_gvTemplate, "isChecked", m_checkStatus))
{
m_checkStatus = !m_checkStatus;
}
}
private voidgridView1_CustomDrawColumnHeader(object sender,DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgse)
{
if(e.Column != null && e.Column.FieldName== "isChecked")
{
e.Info.InnerElements.Clear();
e.Painter.DrawObject(e.Info);
DrawCheckBox(e, m_checkStatus);
e.Handled = true;
}
}
void gridView1_DataSourceChanged(object sender, EventArgse)
{
GridColumncolumn = this.t_gvTemplate.Columns.ColumnByFieldName("isChecked");
if(column != null)
{
column.Width = 45;
column.OptionsColumn.ShowCaption = false;
column.ColumnEdit = new RepositoryItemCheckEdit();
}
}
private void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk)
{
RepositoryItemCheckEditrepositoryCheck = e.Column.ColumnEdit as RepositoryItemCheckEdit;
if(repositoryCheck != null)
{
Graphicsg = e.Graphics;
Rectangler = e.Bounds;
DevExpress.XtraEditors.ViewInfo.CheckEditViewInfoinfo;
DevExpress.XtraEditors.Drawing.CheckEditPainter painter;
DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args;
info =repositoryCheck.CreateViewInfo() asDevExpress.XtraEditors.ViewInfo.CheckEditViewInfo;
painter =repositoryCheck.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter;
info.EditValue = chk;
info.Bounds = r;
info.CalcViewInfo(g);
args = newDevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info,new DevExpress.Utils.Drawing.GraphicsCache(g), r);
painter.Draw(args);
args.Cache.Dispose();
}
}
private boolClickGridCheckBox(DevExpress.XtraGrid.Views.Grid.GridViewgridView, string fieldName, bool currentStatus)
{
boolresult = false;
if(gridView != null)
{
gridView.ClearSorting();//禁止排序
gridView.PostEditor();
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfoinfo;
Pointpt = gridView.GridControl.PointToClient(Control.MousePosition);
info =gridView.CalcHitInfo(pt);
if(info.InColumn && info.Column != null&& info.Column.FieldName == fieldName)
{
for(int i = 0; i < gridView.RowCount; i++)
{
gridView.SetRowCellValue(i, fieldName, !currentStatus);
}
returntrue;
}
}
returnresult;
}
#endregion
/// <summary>
/// 获取选取的数据集合
/// </summary>
private List<Student> getRowIndexList()
{
List<Student> listStudent=new List<Student>();
for (int rowIndex = 0; rowIndex < this.t_gvTemplate.RowCount; rowIndex++)
{
objectobjValue = this.t_gvTemplate.GetRowCellValue(rowIndex,"isChecked");
if(objValue != null)
{
boolcheck = false;
bool.TryParse(objValue.ToString(),out check);
if(check)
{
//m_selectTrue.Add(rowIndex);
listStudent.Add(t_gvTemplate.GetRow(rowIndex)as Student);
}
}
}
returnlistStudent;
}