0

使用分层数据,我想让用户能够选择一个项目来查看其相应的子项目。

例子 :

Item A
-> SubItem1
-> SubItem2
-> SubItem3
Item B
-> SubItem4
-> SubItem5

PieChart 显示 Item A 和 Item B。如果单击 Item1,PieChart 会重新加载并显示 SubItem1、SubItem2 和 SubItem3。如果单击 Item2,则重新加载 PieChart 并显示 SubItem4 和 SubItem5。

如何加载我的数据源?我应该为项目 A(项目 A、子项目 1、子项目 2、子项目 3)和项目 B 创建一个系列,还是应该为第一级(项目 A、项目 B)和每个子项目组创建一个?

有没有办法选择当前显示的系列?

非常感谢 :)

4

1 回答 1

0

我认为有多种方法可以做到这一点,但这是一种非常简洁的方法。

您可以创建一个“智能”数据源,其方法可以更改它将提供给图表的数据。然后,您可以调用这些方法来响应图表交互(在图表的委托内)并重新加载图表。您的数据源界面可能如下所示:

public interface SmartDataSource
{
   void SetToShowDataForItem(Item level);
}

您可以实现方法OnToggledSelection方法,当用户点击切片时,您可以获得与他们点击的切片相对应的项目,调用“SetToShowDataForItem”,然后像这样重新加载图表:

protected override void OnToggledSelection (ShinobiChart chart, SChartRadialDataPoint dataPoint, SChartRadialSeries series, PointF pixelPoint)
{
    Item item = myItems[dataPoint.index];
    SmartDataSource sDataSource = chart.DataSource as SmartDataSource;

    if (sDataSource != NULL) {
        sDataSource.SetToShowDataForItem(item); 
        chart.ReloadData();
        chart.RedrawChart();
    }
}

与框架一起打包的演示也可能对您有所帮助。如果您查看本机 iOS 饼图演示,它们会执行与您尝试执行的操作类似的操作,尽管它们有一个辅助饼图。

祝你好运!

于 2013-05-31T14:58:54.823 回答