簡體   English   中英

Infragistics Ultragrid-使用PerformAutoResize降低性能

[英]Infragistics Ultragrid - slow performance with PerformAutoResize

我使用Ultragrid的代碼執行得很差,但是在跟蹤輸出上使用D3.js運行可視化分析時,我發現grid__InitializeRow多次調用自身。

觸發器創建者: this.grid.InitializeRow += new Infragistics.Win.UltraWinGrid.InitializeRowEventHandler(this.grid_InitializeRow);

問題從以下代碼開始:

column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, true)

在網上搜索時,我找不到有關此信息,但是找到了一些可能的競爭者-調用其中任何一個似乎都會調用初始化行:

  • grid.DataSource
  • grid.Rows.Band.Layout.Bands
  • column.performAutoResize

問題

  1. 是否在任何地方都有相關文檔
  2. 我可以暫時以某種方式禁用觸發器嗎

提前致謝

通過Infragistics論壇找到了答案:

調用column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, true)會觸發來自數據源的重新綁定,進而觸發initialise_row

由於多次調用了重新調整大小(每條帶每列一次),因此重新綁定變得一發不可收拾。

作為參考,我們還存在以下問題。 根據一年的數據,渲染需要2分鍾:

  • 這是一個巨大的網格,單元正在單獨設置樣式。 更改為使用外觀庫/工廠將加載時間縮短了40秒
  • 數據庫調優又節省了40秒鍾
  • 更改自定義總計行的計算方式可減少15秒(通過使用total var而不是更新單元格)
  • AutoResize是倍增力-使所有其他問題變得更糟。 解決這個問題可以節省更多時間。

希望這可以幫助其他遇到類似問題的人

我無法充分發揮“ PerformAutoResize”的作用。 這將需要10秒鍾的時間。 因此,最終我決定自己動手,這僅限於我們對網格配置的特殊使用,該配置僅在每個網格單元中使用Graphics.MeasureString函數,從而僅在單元格(而不是子控件)中顯示文本。

對於600 x 20的網格,大約需要40行代碼,並將時間減少到0.4秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM