上篇: 在mvc视图中实现rdlc报表展示
在上一遍中,由于不知道如何在aspx.cs后台中实例化abp的IxxxAppService.cs的接口,我采取的方式是在视图页中把查询出的数据存储到aspx的某个隐藏域中,然后在aspx.cs的后台事件中去获取,然后再赋值给ReportViewer控件。
这种方式其实很影响性能,会多次对查询的数据做页面存储和转换,而且当数据量较大时会出现页面无法加载数据的问题。
后来才知道abp框架实际上提供了一个全局方法专门去获取当前的ioc容器集合,通过传入接口泛型去找到实例对象。代码如下:
var obj = Abp.Dependency.IocManager.Instance.Resolve<IxxxAppService>();
其中,IxxxAppService为自己的api接口类。
本项目中我的代码参考如下:
var _dbServer = Abp.Dependency.IocManager.Instance.Resolve<IDbServerAppService>();
dt = _dbServer.ExecuteGetTable(dbSerId, sqlStr);