UltraWinGrid - 按行获取当前单元格/列

时间:2011-05-16 18:41:49

标签: infragistics

如果活动单元格类型为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。 如何选择按行分组时,如何获取活动列/单元格?

1 个答案:

答案 0 :(得分:1)

如果GetContext中的列为空,请对类型GetContext进行另一次UltraGridGroupByRow调用。如果返回一个实例,请从中获取Column属性,这将为您提供该行所引用的分组列。