Chart controls for ASP.NET - c#

I am looking people's opinion and experience on using chart controls within an ASP.NET application (web forms or MVC) primarily but also in any kind of project.
I am currently doing my research and I have a pretty big list of controls to evaluate. My list includes (in no particular order):
ASP.NET controls:
DevExpress XtraCharts (http://demos.devexpress.com/XtraChartsDemos/)
Dundas Chart for .NET (http://www.dundas.com/)
Telerik RadChart for ASP.NET AJAX (http://www.telerik.com/)
ComponentArt Charting & Visualization
for ASP.NET (http://www.componentart.com/)
Infragistics WebChart (http://www.infragistics.com/dotnet/netadvantage/aspnet.aspx#Overview)
.net Charting (http://www.dotnetcharting.com/)
Chart Control for .Net Framework
(Microsoft's) (http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx)
Flash controls:
FusionCharts v3 (http://www.fusioncharts.com/)
XML/SWF Charts (http://www.maani.us/xml_charts/index.php)
amCharts (http://www.amcharts.com/)
AnyChart (http://www.anychart.com/home/)
Javascript:
Flot (http://code.google.com/p/flot/)
Flotr (http://solutoire.com/flotr/)
jqPlot (http://www.jqplot.com/index.php)
(If I missed some that worth to be compared against the above please let me know.)
What I am looking is opinions on using any of the above so I can form my own and help others do the same, based on what I read here.
I do not care which one is better. What I care for is why someone likes one of the above and what do these controls offer as a distinct advantage. I am interested in developer's opinion and I would like to find out which things are difficult doing with any of the above controls and which things are easy to achieve.
AJAX compatibility (build in to the controls but also manual), ASP.NET compatibility, input capabilities, data binding options, performance, how much code does one need to write in order to create a chart, are some of the things that I would want to read about.
I have already done my research on StackOverflow for relevant questions but there is nothing on the level of detail that I would want to read in order to make a responsible decision.

I worked a little bit with Google charts and the .Net Chart Control (formerly Dundas Chart 5.5). I do not have an opinion about the other products you listed.
At the time (a year ago) there was no functioning .Net wrapper framework for Google Charts (at least I did not find one), and while the Google Charts Api is relatively simple, it is also very limited. I found the resulting code that composes the chart request to be inherently ugly and not very maintainable (not necessarily the fault of the API, I know - but it would have required a much larger investment to do it better). Here are some of the resulting charts. For instance, I was unable to find a way to align the grid with the tick marks. The 30mph line on the third chart seems to be randomly placed. If you need fine-grained control, Google Charts is not your choice.
The .Net Chart Control on the other hand gives you a lot of control. I worked on a prototype earlier this year and the goal was to create charts that matched the ones from a print publication put together by a design firm. At first I thought it would require compromises, but the Chart Control turned out to be capable of the job. Here is the result (click the 2nd tab). I found the ability to use a range chart in this way, and have control over the placement of the labels for the vertical lines at special values pretty unique for a free tool. Also, Alex Gorev who runs the MSDN forum turned out to be very helpful when I ran into an issue (even though he could not ultimately solve it).
Not a control, but another option for producing charts and publish them to the web, is SSRS. I have used the web service interface to publish a report that contains a chart. This could be a better option for very large sets.
2014 update: The comments above are for a previous (obsolete) generation of Google's chart API. The new API probably addresses many of the limitations, so you should check it out.

SimpleChart is a straight forward and easy to use component. I've used Fusion Charts and would also recommend it for simplicity and well presented graphs.

I went with the Microsoft Chart control, mentioned as the marked-answer, over here: Charts for ASP.NET

so far the best charts I have used is FusionCharts. it can be used with any programming language, as it provides a good documentation. the free version is good enough.

I have done a lot of .Net projects that required graphing and would recommend a solution outside of .Net. The reason why I go outside of .Net is because I expose my datasets by JSON (usually) and like to move the processing to the client. Altogether this saves me burgeoning my servers with graphically intensive tasks.
I have mainly used Javascript API's and I would recommend Protovis because the charts are beautiful (but not always compatible with IE) and can be manipulated in realtime on the client with new AJAX fed datasets.
Another of note is Google Chart and Visualisations.

Echoing everyone else - it all depends what you need to do with it.
We looked at a number of chart controls for a recent project and it's amazing how many of them have really basic limitations. As an example, we needed to specifically set the size and position of the plot area - you'd think that would be easy but the dundas and the microsoft charting api can't do it. We also had a lot of problems getting charts to format datetime scales sensibly.
In the end we went for dotnetCharting. The website makes it look pretty rubbish, but we've found it to be extremely good, if a little quirky in places. I'd thoroughly recommend it to anyone. It's got some reasonably slick AJAXy stuff, but to be honest you can (and we did) custom write most of that stuff yourself anyway. There are more important things to consider when choosing the tool imho.
Make a list of specific things you think you'll need and then find a control that does them. Don't make any assumptions, as a lot of the tools have pretty elementary problems (as above).

I did not use a lot of charting tools, but make sure it will work with MVC if you are planning to use this framework. I have some issues with the DevExpress Grid and MVC.

I haven't used a cross-section of these controls, but of the ones I have used, I prefer the Infragistics WebChart.
In my opinion, the designer is easy to use and there is a ton of flexability.
My second choice would be the Google Chart API.

I've used the DevExpress XtraChart in ASP.NET, and it was great. I've used Google Chart API successfully in a rails project, but as it is hosted, generating the points and labels would be easy on any platform.

I am using ChartDirector in my projects. The thing that I like the most about this component is very complex examples. I have been able to implement their financial chart example with almost no alterations saving enormous amount of time in the process.

i has used microsoft charts control in one of my project. it provided me things that i needed.
Tutorial on Charts Control:
http://parasdoshi1989.wordpress.com/2010/10/03/how-to-include-charts-in-visual-studio-2008-express-edition-using-microsoft-chart-control/

Related

Are there controls available for windows forms that can be used for making logic diagrams?

I am developing a windows forms application and I want to add the ability for the user to create logical flow diagrams. Something similar to what is show in this screenshot: http://www.cocoontech.com/w/images/8/82/Premise_ObjectDiagram.png
Are there controls that can be used to do something like this? At least something that I can use as each block in the diagram. I was thinking of just using panels for them, but there must be an easier way.
Your link is broken. However, there are many diagramming components in .NET. Some of them are:
NWoods Diagrams: http://www.nwoods.com/
SyncFusion essential diagrams: http://www.syncfusion.com/products/user-interface-edition/wpf/Diagram
yWorks' yFiles: http://www.yworks.com/en/index.html
I don't know your exact requirements, but maybe you can leverage the Workflow Foundation (WF). You can create an application in which you host the workflow designers. If you're interested in using it I'd suggest the WF books by Bruce Bukovics:
https://www.apress.com/index.php/author/author/view/id/2050
The Pro WF (Windows Workflow in .NET 3.0) book contains an entire chapter (#17) which explains how you can host the designers in your own application. You could use it to visually create simple work flows that illustrate to the user how the logic is applied.
I am not 100% sure if this is appropriate here to link to specific products but since others do and what I am going to link to is 100% free code, let me share my solution too. Excuse me if I shouldn't.
I have faced the same (if I understand the question correctly) problem once and the only ready free solution I've found was NodeGraph. However, it seemed (and seems) abandoned and lacking what I consider proper model-view separation (I wanted it to do view only but found the actual model manipulation logic being a part of it).
So I've forked it and came up with FlowGraph which looks and feels the same for from the application user point of view (my sincere reverence to the original NodeGraph designer - it's an "eye-candy" IMHO, I've enjoyed how it looks and found nothing serious to improve in this aspect) but is some ways (listed on the project page) different from the developer's perspective. It can look abandoned too as I've uploaded the last version back in 2014 (3 years ago as by now) but it isn't - it is just stable (I am not aware of any problems with it despite it enjoying a fair degree of popularity) so far and I plan a major update soon.

devexpress xtrareports versus reporting services

I am a new devexpress user and was looking at the xtra reports product. I was wondering, what are the advantages of using this over reporting services. They have a policy of not discussing other products on their site so I am wondering what the advantages are are why I should consider using them instead of RS. I am starting a new project so I am flexible to the solution at this point. I know RS well (also Crystal) and I am happy to use a new technology if I know what I could get from it.
thanks for any feedback.
I know this question is old but I use both XtraReports and SQL Reporting Services in the project I work on so maybe some contrasting could still benefit someone.
Xtra Reports are very similar to Crystal is their use of bands. It is very quick and easy to throw together a report with a header, detail, and footer. The bands easily keep things in scope and DevEx handles knowing which fields are collections and can be turned into detail reports. Also the 'Calculated Fields' that Xtra provide are useful for reusing the same custom formulas.
Reporting Services provide more flexibility by implementing tables and matrices instead of using bands. Actually getting a finished report out of it takes a bit longer, and getting exactly what you want with nested reports and detail reports takes quite a bit more fiddling and practice, but in the end you have more flexibility to do things that Xtra is not built for, like running reports side-by-side on the same page or organizing the report any way you want instead of being restricted to horizontal bands. Another downside to Reporting Services is that it doesn't have the Calculated Field support that Xtra does which means anytime you have a custom formula or expression that you want to use more than once you have to copy and paste it into each individual field. SSRS is also good with built-in fields like Execution Time, Page numbers and such while in Xtra you kinda have to do some digging to find those global variables.
In conclusion I would go with SSRS in the long run because it provides much more flexibility. The management system is great for creating linked reports also if you want to save different reports with different parameters.
Hopefully that is helpful to someone. Good luck!
Test both products and you can see the advantages for yourself. If you based your decision on others opinion, you might get stuck.

WPF/.NET data access models - resource recommendations

We're in the early design/prep phases of transferring/updating a rather large "legacy" 3 tier client-server app to a new version. We’re looking at doing WPF over Winforms as it appears to be the direction Microsoft is pushing development of the future and we’d like the maximize the life cycle/span of the apps. That said during the rewrite we’d like to make as many changes to our data access/presentation model to improve performance as much as possible up front as many.
I’ve been doing some research along that vein but the vast majority of the resources I've found that discuss WPF focus only simple data tracking apps or focus on the very basics UI design/controls. The few items that even discuss data presentation are fairly elementary in depth.
Are there any books/articles/recommended reading/other resources recommended for development related to large enterprise level business apps?
Any “gotchas” that should/could be avoided?
General advice to minimize the time underwater
I've been developing a large enterprise-wide WPF application for almost 2 years. As with any UI development, it's important to understand the best UI design pattern for the particular technology you are using. From my experience with WPF, the Model-View-ViewModel design pattern is the most prevalent. Once you understand the data binding powers of WPF, it is easy to see why a pattern like the M-V-VM is so accepted. Even if you don't follow the M-V-VM pattern (or a variation of it) word for word, understand the big picture solution that the pattern addresses. Basically, keep your UI/XAML file (View) in a separate file and all the code-behind/logic (ViewModel) in another file. The View simply reacts to changes in the ViewModel.
Keeping the ViewModel separate, you'll have several benefits.
Easy to create automated tests for the ViewModel object because there are no graphic components in it. It's just an object with methods/properties.
Easier to split the work up between developers (e.g. one developer builds the View while another developer is building the ViewModel).
It's much easier to use multi-threading in the ViewModel since it never interacts directly with UI controls. You know what I mean if you ever tried updating a textbox on a background thread.
Below are some of the pros/cons of WPF vs Window Forms from my experience:
Pros:
Much better UI appearance and experience to end users. WPF allows you to have ultimate control of the appearance of any UI element. (e.g. a list box that contains a picture/button/text for each row).
Data binding is amazing. Binding your UI controls in the XAML file to point to specific properties on your ViewModel class, and everything just works. The UI simply responds to any property changes of the ViewModel. Complete separation! You'll really see the benefit of this if you ever want multiple windows/user controls to display the same information simultaneously and automatically keep in-sync.
Everything I've read on MSDN is that Microsoft is putting much more resources into WPF than into the old Window Forms.
Cons:
Big learning curve. Don't be surprised if it takes a couple months before developers with no prior experience with WPF make a somewhat sophisticated UI. It's a brand new technology and there will be a learning curve.
Some common user controls weren't developed by Microsoft yet (e.g. masked textbox, data grid). However, Visual Studio 2010 does come with a data grid and it works well. Also, there are plenty of 3rd party controls on the market.
The best resouces I can think of:
"Pro WPF in C# 2008" - This book is awesome. It's over 1000 pages. It covers almost ever area of WPF. Use it like a reference book. It's straight to the point with easy to understand examples.
Link to Josh Smith's article on the Model-View-ViewModel pattern: http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090016
Like I mentioned earlier, don't get too hung up on someone's version of the M-V-VM pattern. More imporantly, understand how WPF allows you to easily create a ModelView and have the View automatically respond to changes.
Good Luck! You won't regret WPF if you can get past that darn learning curve.
The VS2010 team has kept a blog about obtaining good performance as they switched to WPF.
They have a series, WPF in Visual Studio that offers a few suggestions (especially the second part).
General advice to minimize the time underwater:
Learn data binding as soon as you possibly can. Use data binding in every single prototype you make. Even if all you're doing is playing around with how panel layouts or grid splitters work: put an XmlDataProvider in your window, create XML test data, and bind to it. This is especially useful if you're using Kaxaml to prototype. I don't know how important that's going to be once VS 2010 is in your hands, but if you're using VS 2008 Kaxaml is invaluable.
Read Bea Stollnitz's article on how to debug data binding in WPF. Set your VS environment up so that you can always see the Output window while you're testing your UI.
Use MVVM and data templates from the very start. Pretend that code-behind doesn't exist, and that the only way to interoperate between the UI and the data model is through data binding and commands. You'll back away from this position pretty quickly, but if you make yourself learn this from the jump you'll find everything you do easier.
Pretend that your application needs to be able to run on a 36" widescreen monitor and a phone. Will you use fixed font sizes and measure things to the pixel? You will not.
Learn about the Grid's shared size scope and star-sizing. Those two things mean that you're going to use the Grid everywhere. The answer to the question "How can I get this element to use half of the remaining space on the screen?" is: with a Grid. (However, the answer to the question "How can I get this element to use all of the remaining space on the screen?" is: with a DockPanel.)
Be aware of the fact that WPF is not mature technology, and of the implications of that. It's not that it's buggy (it's not, though there are bugs) or has inadequate functionality (again, there are issues, but not often critical ones): it's that there are a lot of how-to-do-X-in-WPF articles and blog posts that were written before we really knew what was maintainable and what isn't. Validation's a great example. You can find no end of explanation of how to set up validation rules and attach them to bindings. You might not quite so readily find posts written later about why in most real scenarios you want to use IDataErrorInfo. Be even more hesitant about accepting the first answer you find than you normally would.
If you think that composability and dependency injection are obscure architecture-astronaut concepts with little application to real-world software development, get your head straight.
Don't freak out about how complicated dependency properties are. They can do a ton of things, but as a practical matter all you need to think about at first is change notification and value inheritance. Change notification requires a property setter to do something; that's built into SetValue. Value inheritance requires a property getter to do something; that's built into GetValue. The fact that property values can be either local or inherited means that instead of values being stored in fields, they're stored as dictionary entries; if a given property doesn't have a local value (i.e. there's no value for the property in the DependencyObject's dictionary), the DependencyObject looks to the parent to get its value. The terminology's really verbose, but the ideas are very straightforward.
I found this resource that provides several excellent examples.
Microsoft All-In-One Code Framework
Microsoft All-In-One Code Framework
delineates the framework and skeleton
of Microsoft development techniques
through typical sample codes in three
popular programming languages (Visual
C#, VB.NET, Visual C++). Each sample
is elaborately selected, composed, and
documented to demonstrate one
frequently-asked, tested or used
coding scenario based on our support
experience in MSDN newsgroups and
forums. If you are a software
developer, you can fill the skeleton
with blood, muscle and soul. If you
are a software tester or a support
engineer like us, you may extend the
sample codes a little to fit your
specific test scenario or refer your
customer to this project if the
customer's question coincides with
what we collected.
Today is March 12th, 2010. The project
has more than 360 code examples that
cover 24 Microsoft development
technologies like Azure, Windows 7 and
Silverlight 3. The collection grows by
six samples per week. You can find the
up-to-date list of samples in
All-In-One Code Framework Sample
Catalog.
http://1code.codeplex.com/
Consider looking into using the MVVM pattern.

'Must have' .NET components: experienced developers?

I thought I'd canvas the more experienced .NET (mostly CSharp/ASP.NET) Developers on the most useful general components. I've got about $5-$7k to spend as I want on components as part of a project which involves web based graphs/reports/data visualisation, but I want to get things that will be useful for general purpose the board while the cash is there to be had! My current thoughts are as follows, any opinions welcome:
Dundas Chart (already bought, I've had great experiences using it)
Telerik .NET
DevExpress DXperience (a bit of a dupe against the Telerik components but I figure if one has a strange bug or limitation you have the other as a fallback). Both seem very comprehensive.
Was considering a diagram type control like godiagram- it doesn't look visually amazing like the old Corgent/Dundas diagram did, but I can't find a better one presently. If anyone knows a nice one that does anti-aliasing and suits workflow type diagrams, let me know!
Considering a Telerik SiteFinity license, it looks quite good but not sure how well it'll combine with non-cms type pages, so the jury is out.
Any glaring omissions? Thanks all!
I have purchased the DevExpress and Telerik libraries and, while both are good, I ended up removing Telerik altogether and sticking with DevExpress for some pretty concrete reasons.
First, there is a great deal of overlap between the two and the two of them really share the leadership position in the ASP.NET/C# market.
DevExpress has a significant advantage with respect to their reporting tool. No tool I evaluated was perfect (I looked at four altogether) but DevExpress was the easiest to get going with, the easiest to deploy and at least as powerful as any of the others (with the possible exception of the MS tool - but that has its own deployment problems). This was a big advantage as reporting is central to my app as well.
The DevExpress charting library is very nice and integrates well with the reporting tool - another win for them. Dundas and Telerik have nice libraries as well but, after years of doing charts, ease of setup/definition is important to me and DevExpress has the edge there.
Telerik has a better online HTML editor (we feature a CMS in our product) but the DevExpress product wasn't that far behind. If I was not doing reporting/charting, I might go with Telerik on this basis alone since our CMS is quite important but it isn't enough of an advantage if you are doing reporting/charting.
The Grid products from both are great but DevExpress also offers a PivotGrid that is a spectacular data analysis tool and a nice addition to any site where data analysis is important.
Both have very good support in my experience.
The generic controls from both are very capable but, honestly, there's little reason to choose either one over the other for the controls that I care about. My focus was on date-handling controls and numerical inputs.
So, I can absolutely see people being happy with either of the two but I ended up (after using both for about two years) going with just DevExpress. It didn't hurt that the DevExpress team also wrote a book that really helped flesh out the range of uses to which their library could be put.
Hope that helps!
Before spending money on controls you might use, you should figure out what you're doing and buy the ones you will use.
I like the asp.net chart controls, http://weblogs.asp.net/dwahlin/archive/2008/11/25/getting-started-with-the-asp-net-3-5-chart-control.aspx
but they're free.
I completely agree with #John Boker, but would also add that you consider broadening your search to include development tools which might make your team faster at code production/testing/validation.
Making your code easier to build and maintain wins out over having a wide variety of expensive component libraries in my experience, and this is mostly due to having very good free versions of the controls you are looking for, yet a relative dearth of decent free code production tools.
Development tools like ReSharper and dotTrace will be useful in writing efficient & maintainable code
I think Peter Blum's validator controls are great, and his data entry stuff is pretty nice too.
SQL Server reporting services (if you're using SQL Server) might help you lose the cost of a few of these. Also the no frills Google Chart API is cheap and a lot easier to integrate.

CMS -WYSIWYG for dummies

So, I’m working on a project for my company that involves allowing users the ability to create their own web pages. So for example the real content managers that know what they are doing make all the mains pages. Then a user can make their own page describing what they do and share items with others. Now the catch is that these users have zero and I mean zero experiences with making web pages. The goal would be for me to make like 10 templates they can choose from and then they could drop and drag in the thing to make the webpage. I have looked at items like Ektron and other CMS systems, but the price is per user and our user’s number in the thousands. Short of making an entire custom CMS with an easy to user WYSIWYG editor, is there anything out there that could help? I know there are WYSIWYG editors, but I’m just trying to get some ideas.
Also, I have used DNN and though it can do everything, I think it’s too complicated for my group.
Thanks,
Jojo
How about a wiki? confluence is decent imo.
tinymce is great and easy to implement. Wordpress uses it.
How about OpenWYSIWYG... (Opensource :) ). I haven't try that but seems worth to check..
I am not sure that a Wiki is a solution for your scenario. But if you think so MediaWiki is another useful product.
TinyMCE is quite a good WYSIWYG editor, with an extensible plugin architecture.
Personally I'd avoid OpenWYSIWYG; the documentation is not great and it hasn't been updated in a while.
I'd suggest looking at the YUI Rich Text Editor
You are asking for a "massive websites factory". Not all the CMS have been designed for such business cases.
Note that your requirement is classic but not trivial. Personnalized websites of thousands of users is note without causing performances issues if not well managed (both in edit and browsing modes).
So you should focus at the CMS designed for such requirements and rather those designed for supporting heavy loads.
I can recommend Jahia (www.jahia.com, see the feature "my portal" http://www.jahia.com/jahia/Jahia/site/jahiacom/portal, pricing not based per user: http://www.jahia.com/jahia/Jahia/Home/products/Pricing/pid/594)
I agree that's certainly not the only one designed for webfactory (even if my favorite!) but you can have a look at the online demo and make your opinion.

Categories

Resources