【问题标题】:Simple fusioncharts in MonoTouch not workingMonoTouch 中的简单融合图不起作用
【发布时间】:2012-05-07 17:51:37
【问题描述】:

我正在尝试使用 UIWebView 在我的 MonoTouch 项目中嵌入来自 fusioncharts 的 column3d 图表。我添加了必要的插座并通过使用 loadrequest 加载 url 和 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
    
  • 数据.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 并在字符串中设置图表参数无济于事。有人吗?

【问题讨论】:

    标签: ios uiwebview mono xamarin.ios fusioncharts


    【解决方案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));
    

    【讨论】:

      【解决方案2】:

      我什至使用以下代码测试了 fusionchart 在我的浏览器上正常工作,并且确实如此。

      您是否使用运行 Safari 的 iOS 设备对此进行了测试?

      包含 Column3d.swf 的项目,

      这看起来像一个 Flash 文件,而 iOS(和 WebKit)确实支持 Flash。

      HTML5 版本的website 提示 - 因此,如果它们支持无闪存浏览器,那么您应该能够使用 MonoTouch(或 iOS 中的任何东西)使用 FusionChart 执行您想要的操作。否则,您可能需要查看其他图表产品(或服务器端解决方案)。

      【讨论】:

      • 正如我在上面的编辑中提到的。我强制渲染器仅使用 html5 运行无济于事。我也试图让它在 IOS 中工作,即使我使用纯 javascript 方法,它也可以在我的计算机上工作
      • 遗憾的是,我无法为您提供任何特定于 fusionchart 的帮助(从未使用过)。但是我最初的建议仍然有效。确保它在使用 Safari first 的 iOS devices (不是计算机)上工作,因为它可能需要一些额外/不同的配置,然后一旦它工作,尝试在 @ 中使用相同的配置987654322@ 使用 MonoTouch。
      【解决方案3】:

      FusionCharts 发布了一篇博文,展示了如何在 iOS 设备中获取 HTML5 图表。

      在这里看看 - http://blog.fusioncharts.com/2012/02/create-charts-for-iphone-and-ipad-apps-using-fusioncharts-xt/

      【讨论】:

      • 您好,感谢您的回复。您提供的链接适用于 xcode,我正在寻找 monotouch 的解决方案。我认为问题是我在图表文件夹中的单点触控库在阅读 htmlString 时不包括在内。关于如何让这个工作的任何建议?
      • @JohnD 我们创建了一个使用 MonoTouch 和 FusionCharts XT 的示例应用程序。从这里下载 - blog.fusioncharts.com/wp-content/uploads/2012/02/…。即将在 FusionCharts 博客上发布一篇博文。
      猜你喜欢
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多