在报表系统中,我们通常会有这样的需求,就是由用户来决定报表中需要显示的数据,比如数据源中共有八列数据,用户可以自己选择在报表中显示哪些列,并且能够自动调整列的宽度,已铺满整个页面。本文就讲解一下该功能的实现方法。

第一步:设计包含所有列的报表模板,将数据源中的所有列先放置到报表设计界面,并设置你需要的列宽,最终界面如下:

image

第二步:在报表的后台代码中添加一个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;
        }
    }

 

DynamicColumns

 

源码下载:

DynamicsColumns_AR.zip (20.21 kb)