Infragistics Ultragrid - 使用PerformAutoResize降低性能

时间:2014-05-21 17:16:03

标签: c# ultragrid

我使用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. 我可以暂时以某种方式禁用触发器
  3. 提前致谢

2 个答案:

答案 0 :(得分:1)

通过Infragistics forums找到答案:

调用column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, true)会从数据源触发重新绑定,从而触发initialise_row

由于调整大小被多次调用(每个频段每列一次),重新开始失控。

有关信息,我们还遇到了以下问题。使用一年的数据需要2分钟才能呈现:

  • 这是一个巨大的网格,细胞正在单独设计。更改为使用外观库/工厂在装载时减少40秒
  • 数据库调整削减了另外40秒
  • 更改自定义总计行的方式被计算削减15秒(使用总变量而不是更新单元格)
  • AutoResize是一种力量倍增器 - 使所有其他问题变得更糟。修复了更多的时间。

希望这可以帮助其他人解决类似问题

答案 1 :(得分:1)

我无法制作" PerformAutoResize"充分发挥。这需要10秒钟。所以最后我决定自己滚动,这仅限于我们特别使用网格配置,它只在单元格中显示文本(而不是子控件),使用Graphics.MeasureString函数为每个网格单元格。

大约40行代码,600 x 20网格的时间减少到0.4秒。