UltraGrid Win如果没有过滤器,则隐藏所有行

时间:2012-09-09 20:20:01

标签: vb.net row show-hide infragistics ultrawingrid

我正在为Win Forms使用UltraWin Grid 12(Infragistics)(vb.net 2010 Framework 3.5)。

有没有办法隐藏所有行,只显示已过滤的In行?除非选择了过滤器,否则我不需要显示任何内容,并且当未选择所有过滤器时,再次隐藏所有行。

我尝试了For Each ... row.hidden = true,但没有运气。

1 个答案:

答案 0 :(得分:0)

如果没有过滤掉任何行,您可以使用绘制过滤器隐藏所有行:

public class HideRowsDrawFilter:IUIElementDrawFilter
{
    private UltraGrid grid;
    public HideRowsDrawFilter(UltraGrid grid)
    {
        this.grid = grid;
    }

    public bool DrawElement(DrawPhase drawPhase, ref UIElementDrawParams drawParams)
    {
        if (this.grid.DisplayLayout.Rows.GetFilteredOutNonGroupByRows().Length == 0)
            return true;
        return false;
    }

    public DrawPhase GetPhasesToFilter(ref UIElementDrawParams drawParams)
    {
        if (drawParams.Element is RowUIElement)
            return DrawPhase.BeforeDrawElement;
        return DrawPhase.None;
    }
}

要设置网格的绘制过滤器,请使用以下命令:

this.ultraGrid1.DrawFilter = new HideRowsDrawFilter(this.ultraGrid1);

请注意,这只会阻止绘制行并且它们仍然存在,所以除非您以其他方式禁用它们,否则仍会发生选择,编辑和激活。