C# Crystal Reports

I've used Crystal Reports with .NET numerous times.  Usually the report is predefined.  However, I have a different requirement now.

I'm using Infragistics Ultragrid to display data.  With this control the user can move columns around and change the sort.  The user can also add grouping with this control by dragging a column to a grouping area.  I have to admit it is a nice feature.

However, the issue is that the requirement is once the user is done moving columns, clicking on the column to sort however they want, possibly adding a grouping they want to print the result with Crystal Reports.

Can this be done dynamically?

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

You can prepare your dataset in the application, use it for the grid and and then use it as also as a datasource in Crystal report. Here is an article explaining how to develop the report and how to set the datasource:

Crystal reports have the ability to sort data dynamically too. If the only requirement is to sort the data you can do this directly in the report. If you want also to filter the data then you need to use the grid and the report. If you change the order of the columns in the grid or add/remove columns, group data etc .  this is not going to be transferred to the Crystal report. The report and the grid will use the same datasources but will have separate layouts.
CipherISAuthor Commented:
Yes, I use a dataset. I usually use an XSD and pass the dataset to the report.

The solution I'm looking for is:

1.  Report at this time will contain 3 fields with no grouping.
2.  Report at this time will contain 4 fields with one grouping.
3.  Report at this time will contain 4 fields with one grouping.

Each an any scenario, when the user clicks on the Print Preview button to display the report accurately.
Éric MoreauSenior .Net ConsultantCommented:
wouldn't it be easier to just use the print feature of the grid?
Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

CipherISAuthor Commented:
Is that possible?  

I also need to add a logo, Page # of #, DateTime.  Which is why I was using Crystal Reports.
You can create different reports or subreports and run the right one based on the user action. However, very soon you will be in trouble because the users will start asking for new options. It is just not a good idea to use fixed structure as Crystal reports as a preview of dynamic , which is the table. As Eric said, just use the grid preview
CipherISAuthor Commented:
So, a dynamic report is NOT possible?
Éric MoreauSenior .Net ConsultantCommented:
nothing is impossible but in the case you want the user to control everything (column order, sort order, grouping, ...), CR is surely not the way to go.

maybe creating a HTML output from your grid would be a nice workaround! have a look at http://emoreau.com/Entries/Articles/2009/04/Using-LINQ-and-XML-Literals-to-transform-a-DataTable-into-a-HTML-table.aspx
CipherISAuthor Commented:
If grouping is removed and user can only change column order and sort order?
Éric MoreauSenior .Net ConsultantCommented:
it would be easier but then you will need to deal with column width and formatting and ...

I told you, HTML is surely your best option
Crystal is fixed layout, you can add some codding and based on parameters to hide/show fields so for example you can show Customer field as a first , second, third etc.. column . However this will be enormous amount of work for very small benefit. You can use preview from the grid, it will show the data in the same was as it was on the screen.
CipherISAuthor Commented:
How can I show preview from the grid?
Éric MoreauSenior .Net ConsultantCommented:
for questions about the Infragistics UltraGrid, your best source will surely be http://www.infragistics.com/community/forums/65.aspx
How many columns might you want?

Are they different types?

You could pass parameters into the report with the field names or some indicator of the field then use formulas to display the data in the correct order.  You can do they same for grouping


If {?Param1} = 'Name' then
Else if {?Param1} = 'Address' then
Else if {?PParam1} = 'Salary' then

Similarly for grouping.

Put the formulas on the report in the desired format.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
CipherISAuthor Commented:
@mlmcc - question

So, if I use the parameters - lets say I create 5 of them but only need 3 for one report what will happen with the other 2?  I don't want errors on the report.

Depending on the version of Crystal, you could make them all optional.

Another solution would be to pass a "bad" value so the formula results in a blank being displayed.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Crystal Reports

From novice to tech pro — start learning today.