我正在嘗試使用Telerik報表框架構建報表系統。到目前爲止,我已經能夠使用vs設計器來創建報告,但還沒有設法獲得任何類型的動態數據。如何將報表綁定到DataSource並將其發送到ReportViewer
我正在做一個ASP.NET MVC項目(不是一個telerik MVC項目,這是否重要?)。
我目前有:
- 使用的ReportViewer嚮導
- 報告
- 模型我想用用於填充報告
這裏時自動創建的控制器是我認爲的代碼:
@model Telerik.Reporting.ReportSource
@(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)
)
讓我立即困惑的一件事是如何定義要提取的數據?
說我有,我想用於填充報告的模型:
public class ReportModel()
{
Dictionary<string, int> Graphdata;
public ReportModel()
{
Graphdata = GetGraphData();
}
public Dictionary<string, int> GetGraphData()
{
...
}
}
所以在報告控制器我將創建一個新的報告:
var report = new Report1();
現在我要創建報告的數據源。這是我被卡住的地方...
報告的模型將包含報告中所有不同元素的多個列表,詞典。
在本文檔中,他們這樣做:
// Creating and configuring the ObjectDataSource component:
var objectDataSource = new Telerik.Reporting.ObjectDataSource();
objectDataSource.DataSource = typeof(Products); // Specifying the business object type
objectDataSource.DataMember = "GetProducts"; // Specifying the name of the data object method
objectDataSource.CalculatedFields.Add(new Telerik.Reporting.CalculatedField("FullName", typeof(string), "=Fields.Name + ' ' + Fields.ProductNumber")); // Adding a sample calculated field.
// Specify the parameters, their types and values
objectDataSource.Parameters.Add(new Telerik.Reporting.ObjectDataSourceParameter("color", typeof(string), "Silver"));
objectDataSource.Parameters.Add(new Telerik.Reporting.ObjectDataSourceParameter("productModelID", typeof(int), 23));
而這正是我迷路。所以這裏是我的問題:
如果我在報告上有多個元素,是否必須爲每個元素創建一個數據源?
將數據綁定到報表的正確MVC方式是什麼?
如果reportviewer通過API獲取實際報告,api如何知道將報告對象創建時綁定的數據發送給它?