2012-03-01 6 views
0

私は合計で数万行のグリッドを表示していますが、ユーザーはいつでもそれらの行のうちのごく一部を、行。Invisible UltraGridRowインスタンスを取り除きます

私はUltraGridRowインスタンスと、彼らは目に見えるエリアに移動すると、他のオブジェクトの夫婦のみ作成されることを保証する、LoadOnDemandを有効に:これは私の記憶に応じて(素晴らしい作品

grid.DisplayLayout.LoadStyle = LoadStyle.LoadOnDemand; 

プロファイラー)、テーブル全体を上下にスクロールすると、すべての行のUltraGridRowsの作成がトリガーされると、すべてのUltraGridRowsが作成され、永遠にメモリに残ります。

ビューから外れている行のUltraGridRowオブジェクトを削除するにはどうすればよいですか(自動的に、ただしそうでない場合は手動で) (それともすべてUltraGridRowsを取り除く - 彼らはとにかく自動的に再作成されます)私は考え出し

一つ強引な方法はこれです:

var tmp = grid.DataSource; 
grid.DataSource = null; 
grid.DataSource = tmp; 

それはとても他のいくつかのがある、しかし、いくつかの副作用を引き起こしますUltraGridRowsを取り除く方法は?

ところで、私は成功せず(とブールのparamsのための偽をしようとして)、これらの2人の男を試してみました。

grid.Rows.Refresh(RefreshRow.ReloadData, false, true); 
grid.Rows.DeallocateCells(true); 

私はメモリ消費量をダウン取得しようとしている、とUltraGridRowsは、自分自身で、現在メインの消費者(UltraGridRowsですがhuuugeではありません、彼らは私の場合にはメガバイトのカップルを意味し、200バイトごとの下で消費し、ちょうど私たちが話していることを知っている)。

これはInfragistics 9.2です。

アイデア?

答えて

0

まあ、これは実際に私の作品

var m = typeof(RowsCollection) 
    .GetMethod("InternalClearHelper", BindingFlags.NonPublic | BindingFlags.Instance); 
m.Invoke(grid.Rows, null); 

...常に反射がありますが、それは選択を解除しますので、あなたは前に呼び出すことを覚えていて、その後の選択を復元する必要があります。

関連する問題