using System;
using System.Windows.Forms;
using Infragistics.Win.UltraWinGrid;
namespace Core.Mes.Client.Comm.Control
{
///
/// ExtendedUltraGrid
/// 1.支持列标题复选框全选功能
///
public class ExtendedUltraGrid : UltraGrid
{
///
/// 需要进行选择的列名
///
public string SelectAllColumnName{get;set;}
internal bool IsGroupMode
{
get
{
foreach (var row in this.Rows)
{
if (row.IsGroupByRow)
{
return true;
}
}
return false;
}
}
internal CheckState CheckState{ get; set; }
///
/// ExtendedUltraGrid
///
public ExtendedUltraGrid()
{
this.CreationFilter = new CheckableHeaderCreationFilter(this);
}
///
/// 重写 UltraGrid OnCellChange方法
/// 全选时或反选时触发对应CellChange事件
///
///
protected override void OnCellChange(CellEventArgs e)
{
base.OnCellChange(e);
if (e.Cell.Column.Key.Equals(this.SelectAllColumnName))
{
if (!Convert.ToBoolean(e.Cell.Value))
{
if (CheckState == CheckState.Checked) CheckState = CheckState.Unchecked;
}
else
{
if (e.Cell.Row.Band.Columns.Exists(SelectAllColumnName))
{
foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in this.Rows)
{
if (!Convert.ToBoolean(row.Cells[SelectAllColumnName].Value))
{
return;
}
}
CheckState = CheckState.Checked;
}
}
}
}
internal void ChangeCell(Infragistics.Win.UltraWinGrid.UltraGridCell cell)
{
if (cell != null)
{
OnCellChange(new CellEventArgs(cell));
}
}
}
}