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