我正在尝试使用UIWebView
在我的MonoTouch项目中从fusioncharts嵌入column3d图表。我添加了必要的插件并通过使用loadrequest来加载网址和loadHtmlString
来格式化简单的文本行进行测试。这很好用。我甚至测试了Fusionchart在我的浏览器上使用下面的代码正常工作,它确实可以。
我的MonoTouch项目中有一个名为“charts”的文件夹,其中包含Column3d.swf,jquery.min.js,FusionCharts.js,FusionCharts.HC.js和FusionCharts.HC.Charts.js。
在我的
viewDidLoad中
string htmlString = "<html>
<head>
<script type=\"text/javascript\"src=\"Charts/jquery.min.js\">
</script>
<script type=\"text/javascript\" src=\"Charts/FusionCharts.js\">
</script>
<script type=\"text/javascript\" src=\"Charts/FusionCharts.HC.js\">
</script>
<script type=\"text/javascript\" src=\"Charts/FusionCharts.HC.Charts.js\">
</script>
</head>
<body>
<div id=\"chartContainer\">FusionCharts will load here!
</div>
<script type=\"text/javascript\"> var myChart = new FusionCharts( \"Charts/Column3D.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );myChart.setXMLUrl(\"Charts/Data.xml\");
myChart.render(\"chartContainer\");
</script>
</body>
</html>";
this.webView.LoadHtmlString (htmlString, new NSUrl ("./Charts", true));
/*string htmlString = "<html><head></head><body><span style=\"font-weight: bold;\">This</span> " +
"<span style=\"text-decoration: underline;\">is</span> <span style=\"font-style: italic;\">some formatted</span> " +"<span style=\"font-weight: bold;text-decoration: underline;\">text!</span><br></body></html>";*/ //works
//this.webView.LoadHtmlString (htmlString, null); //works
data.xml中
<chart caption='Weekly Sales Summary'
xAxisName='Week' yAxisName='Amount' numberPrefix='$'>
<set label='Week 1' value='14400' />
<set label='Week 2' value='19600' />
<set label='Week 3' value='24000' />
<set label='Week 4' value='15700' />
</chart>
有人可以解释我是如何让这个工作的吗?提前谢谢。
编辑:我也试过 string htmlString = "<html><head> <title>Creating Pure JavaScript chart</title><script type=\"text/javascript\" src=\"charts/FusionCharts.js\"></script></head> <body><div id=\"chartContainer\">FusionCharts will load here!</div> <script type=\"text/javascript\">FusionCharts.setCurrentRenderer('javascript');var myChart = new FusionCharts( \"charts/Column3D.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );myChart.setXMLData(\"<chart><set label='Data1' value='1' /></chart>\"); myChart.render(\"chartContainer\"); </script></body> </html>";
其中我强制渲染器使用javascript并在字符串中设置图表参数无效。任何人吗?
答案 0 :(得分:1)
我解决了我的问题,并且如果有人遇到类似的问题我会发布它。
我做的第一件事是右键单击我的每个javscript文件,即FusionCharts.js,FusionCharts.HC.js和FusionCharts.HC.Charts.js,并将它们的构建类型设置为内容。
然后我告诉Monotouch图表的构建路径将通过声明
包含在图表文件夹中string path = NSBundle.MainBundle.BundlePath + "/Charts/";
由于我宣布我将在Charts文件夹中查找相关文件,因此我必须通过删除所有“src”中的“charts”关键字引用来修改我的htmlString,如下所示(因为我们已经好了。
string htmlString = "<html>
<head>
<script type=\"text/javascript\" src=\"jquery.min.js\">
</script>
<script type=\"text/javascript\" src=\"/FusionCharts.js\">
</script>
<script type=\"text/javascript\" src=\"/FusionCharts.HC.js\">
</script>
<script type=\"text/javascript\" src=\"FusionCharts.HC.Charts.js\">
</script>
</head>
<body>
<div id=\"chartContainer\">FusionCharts will load here!
</div>
<script type=\"text/javascript\"> var myChart = new FusionCharts(\"Column3D.swf\", \"myChartId\", \"400\", \"300\", \"0\", \"1\" );myChart.setXMLUrl(\"Charts/Data.xml\");
myChart.render(\"chartContainer\");
</script>
</body>
</html>";
然后我调用loadHtml字符串方法,如下所示,第二个参数指向包含javascript文件的路径。
this.webView.LoadHtmlString(htmlString, new NSUrl(path, true));
答案 1 :(得分:0)
我甚至使用下面的代码测试了融合图在我的浏览器上是否正常工作。
您是否使用运行Safari的iOS设备对此进行了测试?
包含Column3d.swf,
的项目
看起来像 Flash 文件,iOS(和WebKit)不支持Flash。
HTML5版本的website提示 - 因此,如果它们支持无Flash浏览器,那么您应该可以使用FusionChart使用MonoTouch(或iOS中的任何内容)执行您想要的操作。否则,您可能需要查看其他图表产品(或服务器端解决方案)。
答案 2 :(得分:0)
FusionCharts发布了一篇博文,展示如何在iOS设备中获取HTML5图表。
请在此处查看 - http://blog.fusioncharts.com/2012/02/create-charts-for-iphone-and-ipad-apps-using-fusioncharts-xt/