这个问题一直困扰我很久,之前是用 GDI+开发报表的,但限于个人开发经验问题,使用GDI+开发报表可能导致软件性能问题。所以转而使用微软自带的Reporting报表工具。话说微软自带工具的兼容性和效率方面应该是比较优秀的。 请看如下图例: 在此图中,我们知道有3种数据,蓝、黄、红色分别代表的三种数据。这个需要在报表设计时就需要确定好有3种数据,假如我有4种数据呢?是不是重新设计一个四种数据的另外一张报表?能否让数据的种数自适应呢? 此类问题应该还是比较纠结的,因为Reporting工具是需要设定数据源的,我参与开发的报表数据的获取不是直接从数据库来的,而是数据库读取后在业务逻辑层使用算法处理后的数组,报表模块是独立的。所以我将数组转化成DataTable、DataSet,转化时DataTable倒是可以自适应的,因为可以根据数组的大小来决定DataTable的列数、行数。这个都不是问题。 主要是从DataTable到Reporting工具这块。Reporting从DataTable获取数据时,是从DataTable中可视化形式的拖动的。DataTable中有几列数据就只能拖动几列。假如数组的大小变化了(主要是数组的列变化(列的个数就是数据的种数),行变化是不影响的),DataTable跟着变化,但是Reporting工具就不行了,就提示出错了。 现在主要想一些方案来解决,最好还是能从Reporting自身来解决。如果不行的话,那就真得先判断数组的大小了,去做多个报表设计,穷举法,把所有数据种类的情况都考虑上。希望受指教,能从报表自身解决问题。