轉帖|其它|編輯:郝浩|2012-01-18 20:44:33.000|閱讀 716 次
概述:Fusioncharts是一個基于Flash的圖表組件,可以用來提供數據驅動的動態圖標 。充分利用流體美麗的Flash為模板,使用XML作為其數據接口,創造緊湊,互動的動態圖表。而如果要將其應用到我們的BI項目中,需要考慮的問題還是很多的。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Fusioncharts是一個基于Flash的圖表組件,可以用來提供數據驅動的動態圖標 。充分利用流體美麗的Flash為模板,使用XML作為其數據接口,創造緊湊,互動的動態圖表。而如果要將其應用到我們的BI項目中,需要考慮的問題還是很多的。首先,我們知道,因為FusionChart是基于flash來展示數據的,它的數據源只能是一定格式的xml文件,而且可能每一種圖表所需要的xml文件格式不一樣。可喜的是,我們可以將數據集轉化為xml以提供其數據源。可是,我們知道,在ADOMD.NET中,用MDX語句查詢后能獲取的對象只能是CellSet,并不是DataSet或DataTable。因此,問題的關鍵就在于如何將CellSet對象轉化為DataTable對象。
其實,只要google一下就知道,早已經有很多先輩們很好地解決了上述問題,并將CellSet對象轉化為DataTable對象的方法公布于眾,具體代碼如下:
/// <summary>
/// 將CellSet轉化成Table
/// </summary>
/// <param name="cellset">CellSet</param>
/// <returns></returns>
private DataTable CellSetToTable(CellSet cellset)
{
DataTable table = new DataTable("cellset");
Axis columns = cellset.Axes[0]; //獲取列軸
Axis rows = cellset.Axes[1];//獲取行軸
CellCollection valuesCell = cellset.Cells;//獲取度量值單元集合
//行軸的級別標題為表的第一列
table.Columns.Add(rows.Set.Hierarchies[0].Caption);
//行軸的各個成員的標題變成表的列
for (int i = 0; i < columns.Set.Tuples.Count; i++)
{
table.Columns.Add(new DataColumn(columns.Set.Tuples[i].Members[0].Caption));
}
int valueIndex = 0;
DataRow row = null;
//向表中填充數據
for (int i = 0; i < rows.Set.Tuples.Count; i++)
{
row = table.NewRow();
//表所有行的第一列值為相應行軸的成標題
row[0] = rows.Set.Tuples[i].Members[0].Caption;
for (int k = 1; k <= columns.Set.Tuples.Count; k++)
{//按順序把度量值單元集合的值填充到表中
row[k] = valuesCell[valueIndex].Value;
valueIndex++;
}
table.Rows.Add(row);
}
return table;
}
代碼很簡單,原理就是遍歷Cellset中的元組,然后填充至DataTable中。
實現上述難點之后,我們就可以將DataTable的數據轉化成xml提供給FunsionChart來展示數據。下面,我們一步步來解答Emmy的問題:
(1)首先,將附件question.rar解壓,并將test6.abf文件還原至SSAS中,并測試一下MDX語句是否正確,如下圖所示:
(2)接著,我們新建一個ASP.NET項目,并將相關flash文件、js文件加入到解決方案中,并將CellSet轉DataTable的方法寫入到一個工具類中,并添加對ADOMD.NET的引用,如下圖所示:
(3)在Default.aspx頁面中加入以下控件,我們希望能通過選擇不同的flash圖表來展示數據:
(4)在頁面后置代碼中,編寫相應的事件代碼,代碼很簡單,但是這里要說明的是,FusionChart可以采用兩種在網頁中呈現數據,一種是生成一段JS代碼,一種是直接生成一段Flash的HTML代碼。點擊預覽DataTable后的結果如下所示(是不是和我們剛開始的MDX測試結果一致?):
當選擇不同的圖表類型后,生成的圖表樣式也不一樣(XML的參數很多,可以參考FunsionChart官方的API說明):
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載