关于FusionChartsFree y轴不显示中文 的解决办法
---首先说明,小辈这是第一次写blog,下面的文章可能写的不是很好,希望前辈们多多指教!
在网上搜了很多关于“FusionChartsFree y轴不显示中文”的问题,但是我得到的答案还是不尽满意,具体的答案如下:
1. Free版本是一个不稳定版本,所以效果是这样,不足为奇。
2. 设置xml中的属性rotateYAxisName="0"(将y轴的字全部横着放),但是咱们用的是free版本,还没有这个属性,所以这个方法不是很好。
…..
总之没有得到最佳的解决方法!
下面我来说一下我的解决办法,我是通过另一种思路来解决y轴不显示中文
首先大家显示图表的方式假设是如下步骤:
1. 首先拼好chart的数据
2. 通过form表单提交将参数值传到图标页面,
3. 图标页面通过传过来的数据加载图表
接下来我要在传值和加载图表这两块做文章…
1. 传值的时候添加一个参数,参数的值为y轴的内容。
2. 将报表的格局分为左右两个部分,
可能大家已经都理解我要做的方案了。
我具体的实现步骤如下:
1.得到传过来的y轴的内容:
//y 轴的名称 String yName=request.getParameter("yName"); if (yName != null && !yName.equals("")) { yName = new String(yName.getBytes("ISO8859-1"), "UTF-8"); }
2.判断有没有这个y轴内容,如果内容为空【这块想到是没有Y轴的报表如:饼图】,那么直接没有必要来显示这个层 【这个层的目的是让他漂浮在报表的上面】
<% if(yName!=null&&!yName.equals("")&&!yName.equals("undefined")) { %> <!--在这里尽量和设置图表的标题的格式一致--> <div id="first_Chart_Div" style="font-family: '宋体';font-size: 13;background: white;position: absolute;left:5px; top:15px;text-align:right;"> <%=yName %> </div> <% } %>
3.和正常的写法一样显示图标的层
<div id="chartdiv" style="width:100%;heigth:100%;"> </div> <script type="text/javascript"> var chart = new FusionCharts("../Charts/FCF_Column2D.swf", "ChartId", "600", "350"); <!--result为传过来的数据值-->
chart.setDataXML("<%=result%>"); chart.render("chartdiv");<!--在这里添加第四步操作-->
</script>
4.添加js代码将我们第二步添加的层添加到chartdiv中,【这一步操作一定要在chart.render("chartdiv")之后添加,因为在执行render时,他先会将里面的内容清空】
var chartDivHeightObj=document.getElementById("chartdiv"); var firstObject_Chart=document.getElementById("first_Chart_Div"); if(firstObject_Chart){ chartDivHeightObj.appendChild(firstObject_Chart); }
5.运行效果之后,火狐里面显示没有问题,但是在ie里面怎么也出不来,我查过资料,在图表中的js【FusionCharts.js】中第第46行添加代码,【注:其他的可能不是这个行数,大家可以根据自己的实际情况来添加,目的就是在flash里面添加一个属性】
this.addParam("wmode",'transparent');
到这里,就大功告成了! 如果还有需要在
最终效果如下
总结: 虽然说我的这个方法非常的俗,但是很好的解决了FusionChartsFree y轴不显示中文的问题, 其实我们在解决某一个问题的时候,怎么都没有思路,不如我们换一个思路来思考这个问题,可能会有意想不到的收获。并且会省大家很多的时间…
哈哈 今天的blog就写到这里,哪里写的不是很好,希望大家多多指教! 如果有不太明白之处, 可留言给我,
下次blog的内容是解决FusionChartsFree图标y轴汉字重叠的问题,希望大家多多关注….