【问题标题】:UltraGrid Win Hide all rows if no filterUltraGrid Win 如果没有过滤器,则隐藏所有行
【发布时间】:2012-09-09 20:20:00
【问题描述】:

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

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

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

【问题讨论】:

  • 过滤是通过网格过滤还是在外部完成?
  • 内部使用标题过滤器行。我的想法是只显示过滤后的行,但在启动 Ultrawin 网格时会填满数据。

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


【解决方案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);

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • Ultrawin 网格没有 DefaultSize,我尝试 Row.Height = 0 但没有运气。
    • 你为什么要填充,当你想稍后在按键时填充它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多