我正在为Win Forms使用UltraWin Grid 12(Infragistics)(vb.net 2010 Framework 3.5)。
有没有办法隐藏所有行,只显示已过滤的In行?除非选择了过滤器,否则我不需要显示任何内容,并且当未选择所有过滤器时,再次隐藏所有行。
我尝试了For Each ... row.hidden = true,但没有运气。
答案 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);
请注意,这只会阻止绘制行并且它们仍然存在,所以除非您以其他方式禁用它们,否则仍会发生选择,编辑和激活。