This example shows how to create a report with the Business Objects collection. Business Objects is an object class data with which the data can be presented in different structures: tables, lists, arrays, etc. This example uses two variants of Business Objects - IEnumerable and ITypedList.

For example, create two different views - ViewIEnumerable and ViewITypedList. Each of these views has its own GetReport action handler. Also you need to define the ViewerEvent action:
@using Stimulsoft.Report.Mvc;

...

@Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions()
{
	Actions =
	{
		GetReport = "GetReportIEnumerable",
		ViewerEvent = "ViewerEvent"
	}
})

...

@Html.Stimulsoft().StiMvcViewer(new StiMvcViewerOptions()
{
	Actions =
	{
		GetReport = "GetReportITypedList",
		ViewerEvent = "ViewerEvent"
	}
})

Also we need to add these actions in the controller. The GetReportIEnumerable action loads the IEnumerable report and register data for it. In a similar way, the GetReportITypedList action loads the ITypedList report and register data for it.

Before the transfer of the result to the client part of the viewer, call the CheckReference() specal method. This method adds a reference to the assembly of the current project in the report ReferencedAssemblies collection, it is necessary to access the business objects that are compiled in this application. Optionally, the business objects may be taken from another assembly:
public ActionResult GetReportIEnumerable()
{
	var report = new StiReport();
	report.Load(Server.MapPath("~/Content/Reports/BusinessObjects_IEnumerable.mrt"));
	report.RegData("EmployeeIEnumerable", CreateBusinessObjectsIEnumerable.GetEmployees());
	CheckReference(report);
	
	return StiMvcViewer.GetReportResult(report);
}

public ActionResult GetReportITypedList()
{
	var report = new StiReport();
	report.Load(Server.MapPath("~/Content/Reports/BusinessObjects_ITypedList.mrt"));
	report.RegData("EmployeeITypedList", CreateBusinessObjectsITypedList.GetEmployees());
	CheckReference(report);
	
	return StiMvcViewer.GetReportResult(report);
}

private void CheckReference(StiReport report)
{
	var assemblyName = Assembly.GetExecutingAssembly().ManifestModule.Name;
	var refs = new List<string>(report.ReferencedAssemblies);
	if (!refs.Contains(assemblyName))
	{
		refs.Add(assemblyName);
		report.ReferencedAssemblies = refs.ToArray();
	}
}

The ViewerEvent action handles all the viewer events (switching pages, zooming, printing, exporting, interactivity, etc.) and returns the answer to the client using the ViewerEventResult() static method:
public ActionResult ViewerEvent()
{
	return StiMvcViewer.ViewerEventResult();
}

На скриншоте ниже Вы можете увидеть результат выполнения данного кода:

Using Business Objects in the Report

Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.