How to load the telerik report in reportviewer? - c#

I am trying to load the telerik report on win form where i have a report viewer to show it ... But I am not successfull to load it. I am not getting its code working write. I want to make it on form load .
private void Form1_Load(object sender, EventArgs e)
{
//Code here to load telerik
}
Any way to load it like crystal report can load
{
crystalReportViewer1.ReportSource = (#"C:\Users\CrystalReport1.rpt");
}
errors I am getting when I am do this
{
Telerik.Reporting.TypeReportSource typeReportSource = new Telerik.Reporting.TypeReportSource();
typeReportSource.TypeName = "Telerik.Reporting.Examples.CSharp.ListBoundReport, CSharp.ReportLibrary";
this.reportViewer1.ReportSource = typeReportSource;
reportViewer1.RefreshReport();
}

What I normally do is to deign the report inside VS in a class library. I then reference the class library in the application, ASP or Winforms. In your case, Winforms, once you have added your class library to the bin, select the "Report Source" from the report viewer properties and add the report from a path or selecting your class library. Thats it.
For more reference, have a look here.

Related

C# winforms RDLC report direct print to printer

I created an app with VS2017 C# WinForms, created a report for a table inside with RDLC reportviewer, the report is working well, I want to print this report directly and send it to the printer without popping up print preview dialog.
Please be informed that I googled this issue and searched this site as well and I couldn't find a solution.
Tried to use the MSDN topic (Walkthrough: Printing a Local Report without Preview) but still no luck.
Here is my button which runs several queries including opening a form (voucher) containing an rdlc reportviewer which loads data to show up in the report:
private void button12_Click(object sender, EventArgs e)
{
SoundPlayer player = new SoundPlayer(Properties.Resources.switch_8);
player.Play();
if (string.IsNullOrWhiteSpace(textBox1.Text) || textBox1.Text == "0")
{
MessageBox.Show("Please select an item!");
}
else
{
MOVE_TO_SOLD();
UPDATE_RECEIPT();
LOAD_DATA();
CLEAR_TEMP();
CHECK_FOR_REC_ID();
GET_NEW_REC_ID();
LOAD_DATA();
txtdiscount.Text = "0";
textBox5.Text = "0";
recowner.Text = recnum.Text;
voucher vr = new voucher();
vr.ShowDialog();
}
}
Thank You!
This Walkthrough will be very helpful for your problem. Please check it out, and if this answer was helpful, mark it as an answer.

Customize Report Viewer

I used Report Viewer in my winforms applications to generate my reports.
I need to customize it to limit the target export type to Excel and Word type ie avoid the PDF export.
How can I accomplish this task?Any suggestions?
I added this snippet in the ReportExport event
private void reportViewer1_ReportExport(object sender, ReportExportEventArgs e)
{
if (e.Extension.Name.ToLower() == "pdf")
{
reportViewer1.LocalReport.Refresh();
reportViewer1.RefreshReport();
}
}
It works fine

ReportViewer: Two rldc files with same DataSource

I have a report working fine, but now I need develop the same report in other language (english btw).Same layout, same fields.
So I created another .rdlc file and other winform (Maybe it's possible use the same winform, I saw something like that on my research)
My problem is:
After I set all fields and layout, when I select .rdlc file on "choose report" in ReportViewer and do the same way I was doing. Something isn't right because I not getting all BindingSource and all TableAdapter automatically.
On .rdlc file I add all DataSet from DataSource that I was needing.
I Try add manually the TableAdapter from Toolbox because it's showing all components from the other report, but doesn't work.
What is the best way to do something like that? two rdlc file with same data, same DataSource.
I'm thinking create another DataSource file (.xsd).
(sorry my english)
Same data but different languages? Try this:
use a single RDLC file with a boolean parameter like blnEnglishLanguage
for every TextBox used as label set an expression like this: =IIf(Parameters!blnEnghlishLanguage.Value, "Item", "Articolo")
BONUS: give a look at this link to localize your form:
see accepted answer and the answer provided by noelicus.
what i have don is.
you need to set a parent window to IsMdiContainer = true.
and then you can open the windows forms with the report in the same parent.
Remove the form border of the windows form report windows
with the code for the buttons to open it in the mdi Container
awDushiHomesClients OpenawViewClients;
private void ViewClientsMenuB_Click(object sender, EventArgs e)
{
if (OpenawViewClients == null)
{
OpenawViewClients = new awDushiHomesClients();
OpenawViewClients.MdiParent = this;
OpenawViewClients.FormClosed += OpenawViewClients_FormClosed;
OpenawViewClients.Show();
}
else
OpenawViewClients.Activate();
}
void OpenawViewClients_FormClosed(object sender, FormClosedEventArgs e)
{
OpenawViewClients = null;
///throw new NotImplementedException();
}
for the second button use the same code but rename all awDushiHomesClients to lets say awDushiHomesClientsEng."But then your file name"
don't know what kind of information you are showing but if you just need to rename the column text copy and past the first report and rename it.

Accessing winform's webbrowser control from another winform, from different assemblies

I have one winform
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string address = textBox1.Text;
webBrowser1.Navigate(address);
}
}
It just loads the webpage, taking the url from textbox.
And that is the end of the project.
Later i have another winform, which will traverse the dom of first winform's webBrowser control and list all the tags. Both winforms are in different assemblies.
I know how to do it using mshtml when both are in same assembly.
But in this case how do i start?
I only have the exe file of first winform, no source code.
If by different assemblies you mean different projects, or one project and one assembly, then one project should reference the assembly/other project. That way you'll be able to use the class of the form that contains the Web Browser control.
In order to use the web browser control via its containing form, you'll need:
the control to be public, or...
a public property to access it via a get accessor, or...
failing the above, you can still use Reflection.

Printing a dwf/dwfx file from WPF

I'm currently attempting to print a document from WPF. I'm using the web browser because it contains an active x control which has the autodesk plugin which I need to view the document.
I'm aware that WPF doesn't directly support web browser but I've just integrated the Windows Forms library for this. I've managed to get the code running and even printing, however the document that prints is blank.
I'm not sure if it could possibly be a conflict between the Windows Forms library and WPF; I'm navigating to the document and only printing once it's loaded with no errors thrown.
Here's the code I'm using:
private void btnPrint_Click(object sender, RoutedEventArgs e)
{
System.Windows.Forms.WebBrowser w = new System.Windows.Forms.WebBrowser();
Uri uri = new Uri("C:\\BOS-BD-4518-000.dwg.dwf");
w.Navigate(uri);
w.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(w_DocumentCompleted);
}
void w_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
System.Windows.Forms.WebBrowser w = (System.Windows.Forms.WebBrowser)sender;
w.Print();
}
One possible hitch could be that the active x control is not being allowed to be load, does anyone know how to force the control to be initialised.
Does anyone have any ideas about how to solve this or another method of printing an autodesk (.dwf) document
Thanks in advance,
SumGuy
Not really an answer of sorts but a solution if anyone out does want to print a .dwf file. Don't, use the new form .dwfx. This is the new file type Autodesk are switching too and its actually a form of XPS which makes things quite easy. You can load it into a web browser without needing active x OR (this is the better way) use the XPS libraries in visual studio because it can be loaded very simply into an XPS viewer.
The code I eventually used to print the dreaded file is below:
private PrintQueue printQueue;
PrintDialog pDialog = new PrintDialog();
pDialog.PageRangeSelection = PageRangeSelection.AllPages;
pDialog.UserPageRangeEnabled = true;
if (pDialog.ShowDialog() == true)
PrintSystemJobInfo xpsPrintJob = printQueue.AddJob(v.FileName, v.FilePath, false);
How easy's that??? There are loads of other ways of doing it using XPS. You can basically just use the dwfx file as an XPS document

Categories