FusionChart完全入门手册 -2
今天主要探討下,數(shù)據(jù)文件的生成方式,只做探討。
?
其實(shí)funsioncharts提供了多種數(shù)據(jù)展現(xiàn)方式,除了前一節(jié)采用的直接的DATAFile的方式外,還有官方提供的標(biāo)準(zhǔn)的c#實(shí)現(xiàn)方式。
看個(gè)截圖
?
?
但是總感覺(jué)使用官方提供的InfoSoftGlobal不是很靈活,同時(shí)由于在前端的js調(diào)用已經(jīng)做了很大的封裝,調(diào)用只需要3行代碼而已。于是我就考慮能否按照自己的思路封裝一個(gè)可以在項(xiàng)目中靈活調(diào)用的工程。
目標(biāo)要求:
1.?盡量減少服務(wù)器端開(kāi)銷(xiāo)
2.?調(diào)用簡(jiǎn)便
3.?擴(kuò)充容易
于是自己寫(xiě)了一個(gè),先說(shuō)下基本思路
?
?????
定義一個(gè)charts類(lèi),里面包含columns lines area pie 等,與funsioncharts提供的圖表類(lèi)型吻合,然后再類(lèi)中定義一堆的屬性,與官方幫助文檔中提供的屬性對(duì)應(yīng),然后定義一組方法,來(lái)實(shí)現(xiàn)把數(shù)據(jù)生成指定的XML格式(因?yàn)椴煌膱D表類(lèi)型的xml格式不一致,所以需要在不同的類(lèi)中實(shí)現(xiàn))。
調(diào)用采用前臺(tái)調(diào)用方式,通過(guò)js的dataXML方式提供數(shù)據(jù)
?????
?
這是一個(gè)官方提供的dataXML方式的工作原理。這里只是對(duì)①進(jìn)行了重新封裝而已。
???? 下面是工程中的兩個(gè)截圖
? ? ?
?
?
下面
前端調(diào)用的例子:
?
?
?
?1?protected?void?Page_Load(object?sender,?EventArgs?e)?2?????{
?3?????????if?(!Page.IsPostBack)
?4?????????{
?5?????????????IOther?other?=?PageEngine.CreateOther();
?6?????????????DataSet?dsMenu?=?other.GetUserExtInfo(studentinfo.UserID);
?7?????????????LitMenu.Text?=?Tools.GetMenuList(dsMenu);
?8?????????????
?9?????????????
10?????????????ILearn?l?=?PageEngine.CreateLearn();
11?????????????DataSet?ds?=?l.GetLosePercentByAge();
12?
13?????????????Column?column?=?new?Column();
14?????????????column.BaseFont?=?"宋體";
15?????????????column.BaseFontSize?=?"12";
16?????????????column.LogoURL?=?"/images/logo.gif";
17?????????????column.LogoAlpha?=?"30";
18?????????????column.UseRoundEdges?=?"1";
19?????????????column.Caption?=?"?各年齡段學(xué)生流失率統(tǒng)計(jì)";
20?????????????column.NumberSuffix?=?"%";
21?????????????column.XAxisName?=?"年齡段";
22?????????????column.YAxisName?=?"流失率";
23?
24?????????????string?ScriptStr?=?@"var?chart1?=?new?FusionCharts('http://www.cnblogs.com/Charts/Column3D.swf',?'chart1Id',?'600',?'400',?'0',?'1');";
25?????????????ScriptStr?+=?"chart1.setDataXML(\""?+?column.ColumnsToSingleCharts(ds,?column)?+?"\");";
26?????????????ScriptStr?+=?"chart1.render('chartview');";
27?????????????ClientScript.RegisterStartupScript(ClientScript.GetType(),?"Myscript",?ScriptStr,?true);
28?
29?????????????var?strjson?=?Tools.GetJsonFromDataTable(ds.Tables[0]).ToString();
30?
31?????????????json.Text?=?strjson;
32?
33?????????}
34?????}
35?
?
優(yōu)點(diǎn):
1.?????????????? 可以在前臺(tái)靈活控制需要表現(xiàn)的圖表形式,在我的工程中,設(shè)計(jì)了可以在前臺(tái)由用戶(hù)靈活切換顯示的圖表類(lèi)型
2.?????????????? 通過(guò)屬性的處理方式,可以在前臺(tái)編碼過(guò)程中,清晰獲得類(lèi)的具體屬性。比如顯示柱狀圖的時(shí)候,在column.XAxisName的時(shí)候可以tool-tip出XAxisName的含義注意事項(xiàng),給前臺(tái)編碼人提供很大方便,實(shí)現(xiàn)了前端和后臺(tái)類(lèi)庫(kù)的分離
3.?????????????? ?
string ScriptStr = @"var chart1 = new FusionCharts('http://www.cnblogs.com/Charts/Column3D.swf', 'chart1Id', '600', '400', '0', '1');";
這里后來(lái)做了優(yōu)化,因?yàn)?/span>2D和3D調(diào)用的swf文件不同,封裝了一個(gè)方法,自動(dòng)獲得需要調(diào)用的swf文件
由于現(xiàn)在工程是08的,換了新Comp后工程只有03和05,現(xiàn)在工程轉(zhuǎn)換還有點(diǎn)問(wèn)題,在教程的最后我會(huì)提供一個(gè)完整的例子,先賣(mài)個(gè)關(guān)子,這里留待大家思考。
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的FusionChart完全入门手册 -2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vscode 默认初始化_Visual
- 下一篇: java top.dialog控件,ja