2013-04-10 7 views
0

Используя иерархические данные, я хочу, чтобы пользователи могли выбирать элемент для просмотра соответствующих подпунктов.Отображение иерархических данных в ShinobiCharts

Пример:

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

PieChart показывает Пункт А и В. Пункт Если Элемент1 нажата, PieChart перезагружается и показывает SubItem1, SubItem2 и SubItem3. Если элемент Item2 нажат, PieChart перезагружается и отображает SubItem4 и SubItem5.

Как загрузить мой источник данных? Должен ли я создать серию для элемента А (ItemA, SubItem1, SubItem2, SubItem3) и один для элемента B, или я должен создать его для первого уровня (Item A, Item B) и каждой группы подэлементов?

Есть ли способ выбрать, какой номер в настоящее время отображается?

Большое спасибо :)

ответ

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, они делают что-то похожее на то, что вы пытаетесь сделать, хотя у них есть вторичная круговая диаграмма.

Удачи вам!

Смежные вопросы