Disclaimer: I am a complete noob at web part developing and may have done things that are not smart or safe to do. However, I did what I did and got the results I was looking for, so follow my lead at your own risk.
Special thanks to: Robby, Moncef, Bary and Gary for helping me with this!
How to create a VisualWebPart in SharePoint 2010 that contains a Telerik ReportViewer control that displays a report. (This assumes you have installed Telerik Reporting on a machine with Visual Studio 2010 and SharePoint Server 2010)
Setting up the SharePoint 2010 server
Follow steps 1-4 in this Telerik guide: http://www.telerik.com/help/reporting/asp-net-report-viewer-deploying-web-reportviewer-in-moss.html
Look on the Details tab of the properties of the Telerik.Reporting.dll file found at (C:\Program Files (x86)\Telerik\Reporting Q3 2011\Bin\Telerik.Reporting.dll) to see what version number you will be using in steps 2 & 3.
1/ Ensure the following .dll files are installed in the Global Assembly Cache: Telerik.Reporting, and Telerik.ReportViewer.WebForms by verifying they exist at C:\Windows\Assembly\
Install them as needed using the gacutil.exe through the Visual Studios 2010 command prompt with the following syntax: gacutil /i “full path to file.dll”
2/ Add the SafeControl lines to your web.config file (mine was located at C:\inetpub\wwwroot\wss\VirtualDirectories\80) using the appropriate Version number.
3/ Register the Handlers required in your web.config file, using the appropriate Version number.
While inside the web.config file, address the note at the bottom of the Telerik guide talking about SessionState by searching ‘enableSessionState’ and ensuring it is set to ‘ <pages enableSessionState="true" …’
Next search the web.config file for ‘name=”Session” ‘ and ensure you have the following two lines of code:
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
Creating the VisualWebPart
In Visual Studios 2010, create a new SharePoint 2010, Visual Web Part, .NET Framework 3.5, Visual C# project
Choose your site for debugging and deploy as a farm solution then click Finish
4/ Drag a report viewer control from the toolbox to the VisualWebPart1UserControl.ascx and it will automatically add the Register line for you.
Modify the Group value property in the Elements.xml to the group you want your webpart to be in
Modify the Title and Description of your webpart as desired within the VisualWebPart1.webpart file
Click Deploy Solution under the Build menu
Add the web part to a page in SharePoint 2010
Open a webpart enabled page on your SharePoint 2010 site in your browser and click the edit button
Click the Web Part button on the Insert tab of the ribbon
Select the Group you named in the Elements.xml file and the Web Part name you used in the .webpart file then click the Add button
Click the save button to view the page normally and if everything is configured correctly you should see the ReportViewer control.
Creating the Report ClassLibrary Project
Open a second Visual Studio 2010 window by right clicking the VS icon on the task bar and selecting the option “Microsoft Visual Studio 2010”
Note: Do not add your new ClassLibrary project to your solution that contains your VisualWebPart project. I did this and started getting “The source of the report definition has not been specified” errors
Click the New > Project option within the File menu
Create a Visual C#, .Net Framework 3.5, Class Library that will hold your reports
Hit (Ctrl + Shft + A) to create a new item in the Class Library then select a Telerik Report Q3 2011 (version may vary)
Cancel out of the report wizard
Select the Page Header section of the report and then hit F4 to bring up its properties
Set the BackgroundColor property within the Style group to ‘Aqua’
Click the Preview tab to see a big cyan rectangle report with no text or data
Right click the ClassLibrary project and select properties then select the Signing tab on the left
Select the “Sign the assembly” check box, click in the drop down box “Choose a strong name key file:” and select “<New…>”
In the Create Strong Name Key dialog box, enter a Key file name like ‘ MyKey1 ‘ and uncheck the “Protect my key file with a password’ checkbox then click the OK button.
Save the ClassLibrary properties by hitting (Ctrl + S)
Click the Build Solution option in the Build menu
Attaching a report to the ReportViewer control
Switch to the Visual Studio 2010 window that has the VisualWebPart project open
Open the Package.package file and click the Advanced button at the bottom left
Click the Add button at the top right and select the “Add Existing Assembly…” option
Using the […] button to the right of the Source Path field, browse to the .dll created in your ClassLibrary’s Debug folder, mine was located here but your path will be different: C:\Vs2010 projects\PalmClassLibraryOfReports\PalmClassLibraryOfReports\bin\Debug\PalmClassLibraryOfReports.dll
Ensure the GlobalAssemblyCache radio button is selected for the Deployment Target and then click the OK button
Save the .package file by hitting (Ctrl + S)
Right click the References and select Add Reference
Select the ClassLibrary project by browsing to it using the Browse tab
Again, Right click the References and select Add Reference
This time Select Telerik.Reporting under the .NET tab or browse to it using the Browse tab
Open your UserControl.ascx.cs file and add the following code to the specified places
Add this to the using section:
using PalmClassLibraryOfReports; (be sure to use the name of your ClassLibrary)
Add this inside the Page_Load block:
if (!IsPostBack)
{
AllTasks AllTasksReport = new AllTasks();
ReportViewer1.Report = AllTasksReport;
ReportViewer1.RefreshReport();
}
(be sure to substitute the name of your report for my “AllTasks” and your ReportViewer ID for my ReportViewer1 which was the default) (you can name this instance of the report anything you want where I have called it “AllTasksReport”)
Save the UserControls.ascx.cs file
Click the Deploy Solution option in the Build Menu
Refresh the web part page to see if everything worked
Go back to the web part enabled page in your browser that contains the ReportViewer control and hit F5 to refresh.
If everything was configured correctly you will see a report generated inside the ReportViewer control with a cyan rectangle.
Connecting a report with an SQL data source to the VisualWebPart
If you would like to see a report with some actual data from an SQL database then continue reading!
(I am using the AxioWorks SQList service which continuously copies SharePoint data into an easy to navigate SQL database.) http://www.axioworks.com/
Make sure the users that will be logged into SharePoint have security rights to read the SQL database. (I gave the Domain Users group access to my database, but had to enable using groups as logins first) http://stackoverflow.com/questions/5029014/how-to-add-active-directory-user-group-as-login-in-sql-server
In the Visual Studio 2010 window with the ClassLibrary, hit (Ctrl + Shft + A) to add a new item then select a Telerik Report Q3 2011, name it and click the Add button.
Follow the steps in the Telerik Report Wizard: [Next >], [Next>], [Add New Data Source…], SQL Data Source [OK], [New Connection…], Server name: = localhost [Refresh], Select or enter a database name:=YourDbName [OK], [Next >],[Next>],[Query Builder…], Select Table [Add],[Close], Select a check box next to a column in the table [OK],[Next>],[Execute Query…],[Finish>>|], [Next>], [Next>], Select your table [Detail >],[Next>], [Next>], Select ‘Aspect’ for Style Sheets [Next >], [Finish >>|]
Open the App.config file and notice the connection string that was added. Mine looked like this:
<connectionStrings>
<add name="PalmClassLibraryOfReports.Properties.Settings.CrmReports"
connectionString="Data Source=localhost;Initial Catalog=CrmReports;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Open the web.config file for your SharePoint site and search for ‘<connectionStrings>’. If you already have a this section, copy paste the line of code which adds the connection string to your database from your app.config file to your web.config file. If you do not have the ‘<connectionStrings>’ section then add it along with the actual connection string found in your app.config file.
In the Visual Studio 2010 window with the VisualWebPart project, open the UserControls.ascx.cs file
Change the name of the report from the basic one to the new one you created that displays data. Be sure to change both occurrences of the old report name.
Click the Deploy Solution option in the Build menu
Go back to your SharePoint page with the VisualWebPart and hit F5 to refresh it
If everything was configured correctly, you will see a report with some data in it.