如果活动单元格类型为double或int,我试图为所选行提供快速摘要。如果网格未按任何列分组,则此方法可以正常工作。但是,当网格按一列或多列分组时,选择顶级行时没有活动单元格。
void ultraGrid_AfterSelectChange(object sender, AfterSelectChangeEventArgs e)
{
var ultraGrid = ((UltraGrid)sender);
var selected = ultraGrid.Selected;
var hasCells = selected.Cells != null && selected.Cells.Count > 0;
var hasRows = selected.Rows != null && selected.Rows.Count > 0;
if ( !hasCells && !hasRows )
{
statusLabel.Text = string.Empty;
return;
}
UltraGridColumn activeColumn;
var activeCell = ultraGrid.ActiveCell;
if( activeCell == null )
{
var aUIElement = ultraGrid.DisplayLayout.UIElement.ElementFromPoint( ultraGrid.PointToClient(MousePosition));
activeColumn = (UltraGridColumn)aUIElement.GetContext(typeof(UltraGridColumn));
}
else activeColumn = activeCell.Column;
if( activeColumn == null || (activeColumn.DataType != typeof (double) && activeColumn.DataType != typeof (int) ) )
{
statusLabel.Text = string.Empty;
return;
}
//code to calculate summaries for selected rows or cells and active column
}
但是当选择逐行时,aUIElement.GetContext(typeof(UltraGridColumn))始终返回null。 如何选择按行分组时,如何获取活动列/单元格?
答案 0 :(得分:1)
如果GetContext
中的列为空,请对类型GetContext
进行另一次UltraGridGroupByRow
调用。如果返回一个实例,请从中获取Column
属性,这将为您提供该行所引用的分组列。