在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面。本文就讲解一下该功能的实现方法。
第一步:设计包含所有列的报表模板,将数据源中的所有列先放置到报表设计界面,并设置你需要的列宽,最终界面如下:

第二步:在报表的后台代码中添加一个Columns的属性,用于接收用户选择的列,同时,在报表的ReportStart事件中添加以下代码:
///
/// 用户选择的列名称
///
public List Columns;
private void Report1_ReportStart(object sender, EventArgs e)
{
// 定义临时变量
int count = 0;
float width = 0;
Label tmp = null;
// 列头控件
List
第三步:运行报表,在运行报表之前需要指定用户选择的列:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Report1 rpt = new Report1();
rpt.Columns = new List(new string[] { "第一列", "第二列", "第三列", "第四列", "第五列", "第六列", "第七列", "第八列" });
rpt.DataSource = GetData();
WebViewer1.Report = rpt;
}
}

源码下载:
DynamicsColumns_AR.zip (20.21 kb)