2013-04-10 83 views
0

使用分層數據,我想讓用戶能夠選擇一個項目來查看其相應的子項目。在ShinobiCharts中顯示分層數據

實施例:

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

餅圖顯示項目A和項目B. 如果點擊項目1,餅圖被重載並示出的SubItem1,SubItem2和SubItem3。 如果單擊Item2,PieChart會重新加載並顯示SubItem4和SubItem5。

如何加載我的數據源?我應該爲項目A(ItemA,SubItem1,SubItem2,SubItem3)創建一個系列,還是爲項目B創建一個系列,還是應該爲第一級(項目A,項目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餅圖演示,他們會做類似於您嘗試執行的操作,儘管它們有第二個餅圖。

祝你好運!