1

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

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

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

4

2 回答 2

1

当没有任何行被过滤时,您可以使用绘图过滤器隐藏所有行:

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);

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

于 2012-11-13T19:03:14.403 回答
0

您不能将默认大小设置为 0 吗?

    myGrid.Rows.DefaultSize = 0
    myGrid.Refresh()

当您完成获得所需的过滤器时,只需稍后添加行。当未选中时,只需再次输入您的默认大小。

于 2012-09-10T07:55:02.623 回答