Pluggable reporting tools in C# WPF application - c#

My application needs the ability to create and produce reports and it seems that the 2 major options are SSRS or Crystal Reports with a whole host of other options like Infragistics, Active Reports and so on.
As the application will be used in a variety of different corporate environments there will be different prefrences for which is their reporting tool. So for example 1 customer might be a SSRS user and another might think that Crystal is the best thing ever.
This means that it is important not to tie my application to one particular reporting tool but have the ability to plug in the relevant one out of a list of many.
Has anyone done something similar?
At the general level, how would you go about implementing this and what problems should I look out for?
Thanks in advance for any help
Alex

The problem you will likely have is that all these systems use their own datasource objects and rendering engines, you will need to implement each system separately with its own proprietary viewer control. You could probably style all the viewers to look the same but they will like not all have the same functions.
If you are using business objects as your datasource, I highly recommend sending your data to a database first, as you will find much less overhead on each reporting solution if you are pulling your data directly from a DB.
Each report viewer (the ones from each different reporting solution) will allow you to strip off everything from the viewer except the main Report View pane. You can then implement your own buttons like "Print, export to PDF, XLS, Zoom, Page Back, Page Forward. There are more. You can then wire your buttons to functions on the the report viewer control i.e. Viewer.Zoom(100). You will likely be wasting a lot of time on this though as it is a lot of effort to recode buttons that are already there and functional, just so that they look the same.

Related

Profiling how a user interacts with a C# Windows Application

I just inherited a C# windows application codebase. It's a relatively large application with lots and lots of UI "elements" that I believe may have been added by the previous developer with little to no interaction with the actual clients. This application is a robotics control system, it runs at a manufacturing facility, and it has some of the most complex UIs I have ever seen (forms inside of forms inside of tabbed elements inside of etc...)
One of the first things I want to do, is learn about how the actual plant floor associates interact with this application. I have already sent out a survey to the different supervisors, but I would like some empirical data as well.
What I would like to do:
I would like to somehow, capture every time a user presses a button, control, etc... and record it to a file. Something simple like:
timestamp,name of control,any other cool data I can capture (program run state, for example.)
The difficulty is that I'm not really a C# expert at this point, and I can't figure out the appropriate way to add some sort of global behavior to my application which does this, and doesn't impact existing functionality. Any advice would be greatly appreciated.
Global keyboard and mouse hooks would be the way to go. Unless someone knows the design thoroughly and can comment how to extend existing functionality. it is going to be bit difficult.

Custom editing functionality for SharePoint web parts

I am trying to develop web parts with custom functionality for editing for normal users. In the chrome bar there would be the same sort of controls as you see in the top right of your browser (except with a triangle instead of a line).
Triangle is to minimise/restore (as in OOB, but with different display)
Square is to maximize a new module type window, probably with an iFrame displayed in a module type view window with jQuery with an additional field to add the url to where it should go
Cross is to delete web part
The functionality is required across a few different types of web parts including calendar, CBQ, Data View, CBQWP, and would ideally be a part of a custom chrome that would be added to them. I don't do back end code so I'm finding it hard to get my head around how someone would put together the functionality. Unless it's simple it won't be me writing this functionality. I have Enterprise 2010 for development, but the people using the control would only have foundation.
I'm basically after opinions about how this would be done. I think it should be a custom control written into the chrome, if that's possible. Does that seem feasible or is there a better way of doing it?
I would really appreciate any advise, even if it's just that it would be better to skin the existing chrome and leave the functionality as is. There's leeway with the functionality so at this stage it's deciding on how best to do it if it's possible or not too bother going down that route.
Thanks very much in advance!!

How do you do drill down reporting in a Win Form [.Net] without 3rd party controls?

Looks like my only option is to create a mutatant child of the tree view and data grid view,but Im mostly an asp.net developer,and thus my lack of knowledge of all things windows. but Im sure there is an alternate easier solution, so before I go down that ugly path, does anyone know a way to create a drill down report in a winform application?
Why not use the Crystal Reports viewer that comes with .NET now?
Introduction to Crystal Reports in .NET

What's the best way to integrate Designers using Dreamweaver with Visual Studio C# developers?

I know about code-behind files, but what is the best real-world way of Designers that are using DreamWeaver or other Design Tools to work with Visual Studio programmers?
For example, say you have a basic website with user interface forms hitting the database... the database work is definitely done by the developer but how to tie the designed forms with the database coding or client-side logic that may involve events on controls, or other GUI related tie-ins. Are the graphic designers also controlling application flow? There seems to be a large disconnect that needs addressed - especially when it comes time to tweak the design after it's been implemented.
Use another approach like MVC, separate your design from your logic. Like this every member (designer / developer) of the team can focus on what they do best.
MVC implementations: link / link
The best way is to make sure that your designers have some knowledge of what kind of HTML they will be working with.
Every ASP.NET developer is aware of MS-HTML, that lovely nesting of HTML tables, but designers aren't. Designers have their own requirements to meet and they'll do them in the best manner possible. Sadly it's not often good for us.
I am always frustrated when I receive a design from our UI team which shows radio-buttons nicely layed out in a grid using floating div's. Then I have to shatter their dreams that no, I can't generate you that HTML (ok, I can with the use of ControlAdapters, but every time they are different designs!).
Try and have a 90%/ 10% rule, where 90% of the design is done before the ASP.NET starts and the 10% is done once the ASP.NET is completed, and done against ASP.NET generated HTML.
And make sure you're using source control! Code doesn't exist unless it's in source control! And thanks to the latest TFS PowerTools there's a lovely Windows Shell integration component so you don't need to use VS to check in and out now more :D
This may sound really cheezy, but when I was working with Dreamweaver / Visual Studio, I'd do my layouts, and then conveniently put [RADIO BUTTON HERE], [INPUT TEXT HERE], etc. in the places where my form elements/controls would go, and I'd save the page as a basic HTML document.
That way Dreamweaver wouldn't nest its own form tags in and I'd have easy to locate places to drop in my ASP.NET controls when I went to merge things in. It was easy enough to create a fresh web form page in Visual Studio and then copy and paste everything over. If for some reason I mucked things up, I'd have a basic HTML "template" to start over wtih.
Unfortunately this is an all too common problem. Dreamweaver typically doesn't write html that is friendly to a .net developer. If at all possible, get someone who can actually read, and write HTML,not just use the Dreamweaver WYSIWYG editor.
I often found that if I'm working with a designer that doesn't know html, that I actually save a lot of time be just having them mock up everything in photoshop, then give me sliced up images. I find that my writing the actual HTML in a .net friendly format saves a ton of time, instead of having to go back and forth with the designer in this situation.

alternative to DataGridView in Win API

Somewhere on net on one Blog I read a sentence that is "DataGridView something like Boeing 777, but what is goal when I do not know how to fly.
Before I goo deep in creating my projects I wanna know is there alternative for DataGridView in C#.
Something like jQuery in WEB api.
The favors things which I am looking for is that is simple for using, if its posibile to be freeware and looks smoth and modern.
Best regards
Admir
If you want to fly one person across town you can learn to fly a Piper Cub. If you want to fly hundreds across an ocean you need to learn to fly a 777.
There are many ways of displaying data in WinForms applications; which one is best for you depends on what you're trying to do. If you want to show a fixed, non-editable, non-scrollable list of data you can use a DataList; simple and limited. If you want to add scrolling you can output the data to a scrolling textbox.
If you want to handle a scrolling grid of multiple rows with multiple, resizable, editable columns you will need to move to a DataGrid or DataGridView.
There are many alternatives to DataGridViews; simpler controls provide fewer features and more functional controls are more complex.
I have implemented the datagridview extensively as an unbound control in a windows forms project using Visual Studio 2008. Looking back, implementing this control has consumed a large amount of time, mostly because it is loaded with bugs and peculiar behavior that should have been fixed rather than just 'documented'. A good data grid control is essential to any application of substance. I would recommend looking for a third party alternative from a company that is more interested in getting it right rather than just getting something out there.
The DataGridView is perfectly easy to use without going too deep. If all you want to do is display data in a grid, create a DataGridView and turn off features like adding and editing rows. The fact that it's got all of these incredibly complex features is really only an issue when you start needing to use them - and in that case, you'll be glad you're using it.
DevExpress has a really good gridview.

Categories

Resources