در هر دو حالت این مورد استفاده میشود . ولی برای اینکه از کلاس ها و ویو مدل های برنامه ات تو گزارش استفاده کنی کارش فرق میکنه که من توضیح ندادم.
این گزارش مستقیم اطلاعات رو از دیتابیس واکشی میکنه .
من فرض میکنم که شما یه ConnectionString با نام TelerikSample در Web.Config اضافه کردید.
همون ConnectionString رو باید در فایلهای Telerik.ReportDesigner.exe.config و Telerik.ReportDesigner.x86.exe.config جا گذاری کنی . که تو مسیر زیر هستند
C:\Program Files (x86)\Telerik\Reporting Q1 2016\Report Designer البته تو سیستم من که اونجا نصب کردم.
این فایلها یه قسمت ConnectionStrings دارند که مثل web.config فقط کافیه connectionString رو اونجا کپی کنی.
<add name="TelerikSample"
connectionString="Data Source=.;Initial Catalog=TelerikSample;User Id=sa;Password=xxxxxx"
providerName="System.Data.SqlClient" />
من فرض میکنم شما یه دیتابیس دارید با همون نام و یه جدول مثل Persons . خوب یکی از اون فایلهای Exe رو تو مسیر بالا اجرا کن.
توی پروژه MVC ، رفرنس هاتون رو به پروژه اضافه کنید :
Telerik.Reporting.dll
Telerik.Reporting.Services.WebApi.dll
Telerik.Reporting.XpsRendering.dll
Telerik.ReportViewer.Mvc.dll
کد نمونه در http://hamed-maleki.ir/TelerikSamMvc.rar
ساخت گزارش در تلریک : http://www.aparat.com/v/FsVXh
مواردی که باید در پروژه مد نظر داشته باشید :
1) یک apiController به نام ReportController هست که همیشه همینجوری باشه. چون توی ویو ازش استفاده کردیم تو سطر سوم.
@(Html.TelerikReporting().ReportViewer()
.Id("reportViewer1")
.ServiceUrl(Url.Content("~/api/reports/"))
.ReportSource(Model)
.ViewMode(ViewMode.Interactive)
.ScaleMode(ScaleMode.Specific)
.Scale(1.0)
.PersistSession(false)
.PrintMode(PrintMode.AutoSelect)
.TemplateUrl("/ReportViewer/templates/telerikReportViewerTemplate.html")
.Deferred())
2- فایل گزارش رو در مسیر Content/Reports گذاشتم
3- فولدرهای ReportViewer و Resources برای گزارشات ضروری می باشند.
4- در فایل web.config در مسیر Views/web.config فضاهای نام را اضافه نمایید .
<add namespace="Telerik.Reporting" />
<add namespace="Telerik.ReportViewer.Mvc" />
که الان مال من این شکلیه
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory , System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="TelerikSamMvc" />
<add namespace="Telerik.Reporting" />
<add namespace="Telerik.ReportViewer.Mvc" />
</namespaces>
</pages>
</system.web.webPages.razor>
در فایل App_Start/WebApiConfig.cs خط زیر را در آخر تابع Register قراردهید
Telerik.Reporting.Services.WebApi.ReportsControlle rConfiguration.RegisterRoutes(config);
کد اکشن برای گزارش موجود با پارامتر PersonId مساوی 2 ست شده است که به شکل زیر است
var reportGeneral = new UriReportSource() { Uri = Server.MapPath("~/Content/Reports/TelerikSampleReport.trdx") };
reportGeneral.Parameters.Add("PersonId", 2);
return View(reportGeneral);
کد ویو برا نماش گزارش
@model Telerik.Reporting.UriReportSource
@{
ViewBag.Title = "نمایش گزارش";
}
@section styles
{
<link href="http://kendo.cdn.telerik.com/2015.3.930/styles/kendo.common.min.css" rel="stylesheet" />
<link href="http://kendo.cdn.telerik.com/2015.3.930/styles/kendo.blueopal.min.css" rel="stylesheet" />
<style>
#reportViewer1 {
position: absolute;
left: 5px;
right: 5px;
top: 60px;
bottom: 5px;
overflow: hidden;
font-family: Verdana, Arial;
}
</style>
}
@(Html.TelerikReporting().ReportViewer()
.Id("reportViewer1")
.ServiceUrl(Url.Content("~/api/reports/"))
.ReportSource(Model)
.ViewMode(ViewMode.Interactive)
.ScaleMode(ScaleMode.Specific)
.Scale(1.0)
.PersistSession(false)
.PrintMode(PrintMode.AutoSelect)
.TemplateUrl("/ReportViewer/templates/telerikReportViewerTemplate.html")
.Deferred())
@section scripts
{
<!--kendo.all.min.js can be used as well kendo.web.min.js and kendo.mobile.min.js-->
<script src="@Url.Content("~/ReportViewer/js/kendo.subset.2015.3.930.min.js")"></script>
<script src="@Url.Content("~/ReportViewer/js/telerikReportViewer-10.0.16.113.js")"></script>
@(
// All deferred initialization statements will be rendered here
Html.TelerikReporting().DeferredScripts()
)
}
البته در فایل Layout برای Section های scripts و styles ضروری بودن رو false کنید.
رشته اتصال هم در فایل web.config روت به شکل زیره
<add name="TelerikSample" connectionString="Data Source=.;Initial Catalog=TelerikSample;User Id=sa;Password=*****#" providerName="System.Data.SqlClient" />