我正在为 Win Forms (vb.net 2010 Framework 3.5) 使用 UltraWin Grid 12 (Infragistics)。
有没有办法隐藏所有行并只显示过滤的 In 行?除非选择了过滤器,否则我不需要显示任何内容,并且当未选择所有过滤器时,再次隐藏所有行。
我尝试了 For Each ... row.hidden = true,但没有运气。
我正在为 Win Forms (vb.net 2010 Framework 3.5) 使用 UltraWin Grid 12 (Infragistics)。
有没有办法隐藏所有行并只显示过滤的 In 行?除非选择了过滤器,否则我不需要显示任何内容,并且当未选择所有过滤器时,再次隐藏所有行。
我尝试了 For Each ... row.hidden = true,但没有运气。
当没有任何行被过滤时,您可以使用绘图过滤器隐藏所有行:
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);
请注意,这只会阻止绘制行并且它们仍然存在,因此除非您以其他方式禁用它们,否则仍然会发生选择、编辑和激活。
您不能将默认大小设置为 0 吗?
myGrid.Rows.DefaultSize = 0
myGrid.Refresh()
当您完成获得所需的过滤器时,只需稍后添加行。当未选中时,只需再次输入您的默认大小。