Telerik Reporting HTML5 передать параметры
Я пробовал помощник MVC и стандартный просмотрщик HTML5. Мне интересно, удалось ли кому-нибудь успешно загрузить отчет, содержащий параметры, с использованием новых средств просмотра. Я не могу получить никакой обратной связи от Telerik.
@{
var report = new UriReportSource() { Uri = "TestReport.trdx" };
report.Parameters.Add(new Telerik.Reporting.Parameter() { Name="UserId", Value=1234 });
report.Parameters.Add(new Telerik.Reporting.Parameter() { Name = "UserName", Value = "Test User" });
}
@(Html.TelerikReporting().ReportViewer()
.Id("reportViewer1")
.ServiceUrl("/api/reports/")
.TemplateUrl("/ReportViewer/templates/telerikReportViewerTemplate.html")
.ReportSource(report)
.ViewMode(ViewModes.INTERACTIVE)
.ScaleMode(ScaleModes.SPECIFIC)
.Scale(1.0)
.PersistSession(false)
)
4 ответа
Если все параметры были установлены, скорее всего, проблема заключается в Newtonsoft.Json.dll. Ваш проблемный проект, скорее всего, ссылается на версию GAC от Newtonsoft. Чтобы исправить это, проверьте, установлен ли Newtonsoft в GAC, и удалите его, если так. Для быстрого исправления просто удалите ссылку Newtonsoft из своего проекта и добавьте ее, используя nuget.
Хотите знать, если вы уже тестировали How To: передавать значения в параметры отчета в документах Telerik Reporting или нет.
Вам необходимо объявить источник данных отчета отдельно, а затем передать его, например,
@{
var dataSource = new UriReportSource() { Uri = "rptUncashedCheckLetter.trdx" };
dataSource.Parameters.Add(new Telerik.Reporting.Parameter() { Name = "CheckNumber", Value = "2315527" });
}
@(Html.TelerikReporting().ReportViewer()
.Id("reportViewer1")
.ServiceUrl("/api/reports/")
.TemplateUrl("/Reports/telerikReportViewerTemplate.html")
.ReportSource(dataSource)
.ViewMode(ViewModes.INTERACTIVE)
.ScaleMode(ScaleModes.FIT_PAGE_WIDTH)
.Scale(1.0)
.PersistSession(false)
)
Кажется, нет способа сделать это напрямую при использовании версии MVC.
В.cshtml в качестве заголовка у вас есть @model yourModel
Затем для создания отчета у вас есть:
UriReportSource urs = new UriReportSource (){
Uri = "Report1.trdx"
};
urs.Parameters.Add("id", Model.id.ToString());
urs.Parameters.Add("start", Model.Start.ToString());
urs.Parameters.Add("end", Model.Stop.ToString());
@(Html.TelerikReporting().ReportViewer()
.Id("reportViewer1")
.ServiceUrl("/api/reports/")
.TemplateUrl("/ReportViewer/templates/telerikReportViewerTemplate.html")
.ReportSource(urs)
.ViewMode(ViewModes.INTERACTIVE)
.ScaleMode(ScaleModes.SPECIFIC)
.Scale(1.0)
.PersistSession(false))
И файл Model.cs:
public class yourModel
{
public Guid id{ get; set; }
public DateTime Start { get; set; }
public DateTime Stop { get; set; }}
Я так и сделал, надеюсь, это поможет:)