我正在了解人们对在 ASP.NET 应用程序(Web 窗体或 MVC)中使用图表控件的意见和经验,主要是在任何类型的项目中。
我目前正在做我的研究,我有一个相当大的控制 list 要评估。我的列表包括(排名不分先后):
ASP.NET 控件:
闪光灯控制:
Javascript:
(如果我遗漏了一些值得与上述内容进行比较的内容,请告诉我。)
我正在寻找的是关于使用上述任何内容的意见,因此我可以根据我在此处阅读的内容形成自己的观点并帮助其他人做同样的事情。
我不在乎哪个更好。我关心的是为什么有人喜欢上面的其中一个,以及这些控件作为一个明显的优势提供了什么。我对开发人员的意见很感兴趣,我想找出使用上述任何控件哪些事情很难做到,哪些事情很容易实现。 AJAX 兼容性(内置于控件中,但也手动)、ASP.NET 兼容性、输入功能、数据绑定(bind)选项、性能、创建图表需要编写多少代码,这些都是我想要的想了解一下。
我已经针对相关问题对 StackOverflow 进行了研究,但没有任何内容是我想要阅读以便做出负责任的决定的详细程度。
最佳答案
我使用了一些 Google 图表和 .Net 图表控件 (formerly Dundas Chart 5.5)。我对您列出的其他产品没有意见。
当时(一年前)没有适用于 Google Charts 的可用 .Net 包装器框架(至少我没有找到),虽然 Google Charts Api 相对简单,但也非常有限。我发现构成图表请求的结果代码本质上是丑陋的,而且不太易于维护(我知道这不一定是 API 的错误——但它需要更大的投资才能做得更好)。 Here are some of the resulting charts .例如,我无法找到将网格与刻度线对齐的方法。第三张图表上的 30mph 线似乎是随机放置的。如果您需要精细控制,Google Charts 不是您的选择。
另一方面,.Net 图表控件为您提供了很多控制权。今年早些时候,我研究了一个原型(prototype),目标是创建与设计公司制作的打印出版物中的图表相匹配的图表。起初我认为这需要妥协,但事实证明图表控件能够胜任这项工作。 Here is the result (单击第二个选项卡)。我发现以这种方式使用范围图的能力,并且可以控制垂直线标签的放置,特殊值对于免费工具来说非常独特。此外,运行 MSDN 论坛的 Alex Gorev 在 I ran into an issue 时非常有帮助。 (尽管他最终无法解决)。
SSRS 不是控件,而是生成图表并将其发布到 Web 的另一种选择。我已经使用网络服务接口(interface)发布a report that contains a chart .对于非常大的集合,这可能是更好的选择。
2014 年更新:以上评论适用于上一代(过时的)Google 图表 API。新 API 可能解决了许多限制,因此您应该检查一下。
关于c# - ASP.NET 的图表控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946553/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth
require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie
我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。