轉(zhuǎn)帖|使用教程|編輯:龔雪|2014-07-30 10:36:25.000|閱讀 1354 次
概述:本文講解使用Highcharts最新的版本4.03,解決其在.net下本地導(dǎo)出圖片出現(xiàn)BUG的問(wèn)題,在分析中有提供效果圖和代碼,遇到此類(lèi)問(wèn)題的朋友或是想研究Highcharts的朋友,可以參考。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
現(xiàn)在Highcharts最新的版本是4.03,這JavaScript插件居多優(yōu)點(diǎn)就不比多說(shuō)了(Highcharts插件下載),demo官網(wǎng)上也很詳細(xì)。但是優(yōu)點(diǎn)不爽的地方是,導(dǎo)出圖片這個(gè)功能是通過(guò)請(qǐng)求官網(wǎng)的服務(wù)器地址下載的,這個(gè)就有點(diǎn)不爽了,因?yàn)楹芏嘞到y(tǒng)要求的環(huán)境是不聯(lián)網(wǎng)就能使用的,本人英語(yǔ)很挫,開(kāi)始不知道官網(wǎng)的下載頁(yè)面,下面會(huì)提供第三方的解決辦法,自己在Google大神上面找了很久,最后找到了一個(gè)外國(guó)人寫(xiě)的一Demo,Highcharts-export-module-asp.net-master.zip 。當(dāng)時(shí),心中竊喜,踏破鐵鞋無(wú)覓處,得來(lái)全不費(fèi)工夫,果斷下載,看效果。
兩個(gè)地方有點(diǎn)瑕疵。
咋辦?!不能用。
先試試連官網(wǎng)導(dǎo)出有木有同樣的問(wèn)題,結(jié)果官網(wǎng)一切ok.
然后Google下,沒(méi)有發(fā)現(xiàn)有人遇到同樣的情況。So…..自己分析。
這里發(fā)現(xiàn)了內(nèi)容有些不一樣:
所有線(xiàn)導(dǎo)出,在svg這里xml里,有個(gè) class="highcharts-series-group"的g 節(jié)點(diǎn)下面的子節(jié)點(diǎn)g 的屬性 visibility="visible",而去掉一根線(xiàn)的話(huà),這個(gè)值是hidden,ok這里的問(wèn)題找到了,第三方的Demo對(duì)這個(gè)屬性沒(méi)有做區(qū)分處理。
還有一個(gè)bug,經(jīng)分析得知,那是屬性class="highcharts-tooltip"的g節(jié)點(diǎn),這個(gè)分析沒(méi)有其他辦法,只有一個(gè)個(gè)節(jié)點(diǎn)去刪,然后保存看效果。
OK!!!
所有問(wèn)題都已找到,下面要做的無(wú)非就是對(duì)xml做篩選,然后remove掉這幾個(gè)特殊屬性的節(jié)點(diǎn),代碼如下:
在Tek4.Highcharts.Exporting. Exporter下的CreateSvgDocument
方法中增加如下代碼:
XmlDocument xml = new XmlDocument(); xml.LoadXml(this.Svg); XmlNodeList nodeListAllg = xml.GetElementsByTagName("g"); Dictionary<int, XmlNode[,]> dic = new Dictionary<int, XmlNode[,]>(); int i = 0; foreach (XmlNode xNod in nodeListAllg) { i++; XmlNode xmlvisibility = xNod.Attributes.GetNamedItem("class"); if (xmlvisibility != null && xmlvisibility.Value == "highcharts-series-group") { foreach (XmlNode xNod2 in xNod.ChildNodes) { i++; XmlNode xmlvisibility1 = xNod2.Attributes.GetNamedItem("visibility"); if (xmlvisibility1 != null && xmlvisibility1.Value == "hidden") { XmlNode[,] xmln = new XmlNode[1, 2]; xmln[0, 0] = xNod; xmln[0, 1] = xNod2; dic.Add(i, xmln); } } } else if (xmlvisibility != null && xmlvisibility.Value == "highcharts-tooltip") { XmlNode[,] xmln = new XmlNode[1, 2]; xmln[0, 0] = xml.FirstChild; xmln[0, 1] = xNod; dic.Add(i, xmln); } } foreach (KeyValuePair<int, XmlNode[,]> a in dic) { a.Value[0, 0].RemoveChild(a.Value[0, 1]); } this.Svg = xml.OuterXml;
相關(guān)教程:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn