1

Winフォーム(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

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.

于 2012-09-10T07:55:02.623 に答える