使用分层数据,我想让用户能够选择一个项目来查看其相应的子项。
示例:
Item A
-> SubItem1
-> SubItem2
-> SubItem3
Item B
-> SubItem4
-> SubItem5
PieChart显示了项目A和项目B. 如果单击Item1,则重新加载PieChart并显示SubItem1,SubItem2和SubItem3。 如果单击Item2,则重新加载PieChart并显示SubItem4和SubItem5。
如何加载数据源?我应该为项目A(ItemA,SubItem1,SubItem2,SubItem3)和项目B创建一个系列,还是应该为第一个级别(项目A,项目B)和每个子项目组创建一个?
有没有办法选择当前显示的系列?
非常感谢:)
答案 0 :(得分:0)
我认为有多种方法可以做到这一点,但这里有一个非常简洁的方法。
您可以创建一个“智能”数据源,其方法可以改变它将提供给图表的数据。然后,您可以调用这些方法来响应图表交互(在图表的委托中)并重新加载图表。您的数据源界面可能如下所示:
public interface SmartDataSource
{
void SetToShowDataForItem(Item level);
}
您可以实现方法OnToggledSelection
方法,当用户点击切片时,您可以获得与他们点击的切片相对应的Item,调用'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饼图演示,它们会执行类似于您尝试执行的操作,尽管它们具有辅助饼图。
祝你好运!