Kendo ui 单击时如何分解剑道饼图楔块?

Kendo ui 单击时如何分解剑道饼图楔块?,kendo-ui,kendo-dataviz,Kendo Ui,Kendo Dataviz,我知道如何首先分解饼图楔块(只需将相关数据项的“分解”设置为true),但我想做的是在JavaScript(绑定到seriesClick事件的函数)中单击时使楔块分解。当然,我希望重置任何其他已分解的楔块,以便一次只有一个已分解的楔块 当然,我可以通过调用Ajax来获取图表,传递一个参数来指示单击的楔块,来实现这一点,但这是非常低效的,而且可能非常慢,这取决于数据的连接和复杂性(以及或所需的处理) 我在别处找到了同一个问题的答案,但建议的解决方案不适用于剑道图(属性设置在剑道中不受支持) 如果有

我知道如何首先分解饼图楔块(只需将相关数据项的“分解”设置为true),但我想做的是在JavaScript(绑定到seriesClick事件的函数)中单击时使楔块分解。当然,我希望重置任何其他已分解的楔块,以便一次只有一个已分解的楔块

当然,我可以通过调用Ajax来获取图表,传递一个参数来指示单击的楔块,来实现这一点,但这是非常低效的,而且可能非常慢,这取决于数据的连接和复杂性(以及或所需的处理)

我在别处找到了同一个问题的答案,但建议的解决方案不适用于剑道图(属性设置在剑道中不受支持)


如果有人有这方面的经验,我将非常感谢你给我的任何建议

我在剑道论坛上发现了这篇帖子,它要求的是同样的东西,看起来在回复中可能有一个解决方案:

其要点是,您需要更新数据中的“爆炸”字段,然后在单击该字段后重新绘制图表。这可以通过“seriesClick”事件完成:

我在此基础上构建了一个工作JSFIDLE:


HTH

以下是在剑道UI中进行jQuery“分解”的另一种方法:

seriesClick: function (e) {
  for (let i = 0; i < e.series.data.length; i++) {
    if (e.category === e.series.data[i].category) {
      e.series.data[i].explode = true;
    } else {
      e.series.data[i].explode = false;
    }
  }

  e.sender.setOptions(e.sender.options);
  e.sender.redraw();
},
序列单击:函数(e){
for(设i=0;i

无需重新创建图表。只需重置
选项
重绘
。但是,如果要重新创建图表,请确保正确地销毁它。否则,就会有HTML残留。你可能会得到同一事物的多个图表。

谢谢,德里克。我还有一个问题-你知道在图表显示后如何关闭动画(过渡)吗?也就是说,在单击楔块后重新绘制时,它不会显示动画。我发现在事件处理程序中将转换设置为false没有效果。我可以关闭它的唯一方法是首先将“transitions”设置为false,但随后我无法获得我想要的初始动画。我使用了.refresh()方法,没有重新创建图表,但它仍然显示动画(过渡),即使在将过渡设置为false之后也是如此。
seriesClick: function (e) {
  for (let i = 0; i < e.series.data.length; i++) {
    if (e.category === e.series.data[i].category) {
      e.series.data[i].explode = true;
    } else {
      e.series.data[i].explode = false;
    }
  }

  e.sender.setOptions(e.sender.options);
  e.sender.redraw();
},