【问题标题】:ExtJS 6.0.2: How do I force a custom progress bar grid column to update on sortingExtJS 6.0.2:如何强制自定义进度条网格列在排序时更新
【发布时间】:2020-04-20 22:36:25
【问题描述】:

在我正在处理的代码中,有一个网格,其中有一列使用自定义的进度条表示来自商店的两个字段的数据。进度是根据其他两个字段计算得出的,并以类似“x / y”的格式在进度条上显示为文本。

我的问题是,当重新使用网格时,某些或所有行的 x 和 y 值相等(即进度为 100%)时,进度列不会正确更新;处于 100% 的进度条不会随其各自的行移动,和/或进度条在排序后似乎重复或丢失。请注意,如果一行或多行的进度为 0,或者两行或多行的进度相同但用于计算各行进度的值不同的任何其他情况,也会发生这种情况。

这是一个说明问题的小提琴:https://fiddle.sencha.com/#view/editor&fiddle/35c5

是否有某种方法可以在网格排序时强制重新呈现整个进度列,而不仅仅是计算进度值发生变化的那些,以便所有进度条始终显示正确?

【问题讨论】:

  • 我不得不说,这是一个非常有趣的问题。我花了一些时间试图弄清楚,直到现在还没有运气。我注意到的是,进度条的 updateValue() 方法在排序时只调用了 2 次(不是 5 次)
  • 而且,如果我忽略了计算不到 100% 的那一行,您会注意到根本不会调用 updateValue()。如果计算值和显示文本都发生变化(现在,显示文本似乎是忽略)当行重新排序时。 (这也包括重新加载网格并因此而改变行顺序,因为我们也看到了那里的问题。)

标签: javascript datagrid progress-bar customization extjs6-classic


【解决方案1】:

我设法通过从每个计算值中减去一个小的随机量(在 0(不包括)到 10e-8(包括)的范围内)(或在值为 0 的地方添加它)来解决这个问题。 (由于两个贡献值都为 0,因此将值设置为 0,则不会添加随机值,因为在这种情况下没有必要。)这可确保网格中的每个值都是不同的,因此将遵循其各自的值行的顺序由于排序或更新而改变时的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2013-02-12
    相关资源
    最近更新 更多