Winフォーム(vb.net 2010 Framework 3.5)にUltraWin Grid 12(Infragistics)を使用しています。
すべての行を非表示にして、フィルタリングされたIn行のみを表示する方法はありますか?フィルタが選択されていない限り、何も表示する必要はありません。すべてのフィルタが選択されていない場合は、すべての行を再度非表示にします。
For Each ... row.hidden = trueを試しましたが、うまくいきませんでした。
Winフォーム(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);
これは行の描画を妨げるだけであり、それらはまだそこにあることに注意してください。別の方法でそれらを無効にしない限り、選択、編集、およびアクティブ化は引き続き行われます。
Cant u just set the default size to 0 ?
myGrid.Rows.DefaultSize = 0
myGrid.Refresh()
And when ever you are done getting the filters you need, just add the rows later. And when unselected just put your defaultsize again.