因为报表打印纸张是固定的,但是数据是动态的,尝尝有的列数据会内容多,需要换行显示,而有些数据有较少,一行空间较大,所以我们会很希望,报表更智能点,能够根据数据项的长度来自动调节列宽,那本文就来介绍如何实现动态修改列宽的功能。
1. 新建WinForm 程序
2. 新建区域报表
3. 为区域报表绑定数据
4. 选择区域报表的脚本选项,实现ActiveReport_ReportStart 方法
public void ActiveReport_ReportStart()
{
}
5. 实现GetColumnWidth 方法,根据数据库的数据长度设置宽度。
public float GetColumnWidth()
{
using (SqlConnection connection = new SqlConnection("user id=sa;data source=localhost;initial catalog=TestDB1;password=xA123456;"))
{
SqlDataAdapter adapter = new SqlDataAdapter("select top 1 列宽 from 报表列宽 ", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);
return float.Parse(dt.Rows[0][0].ToString());
}
}
6. 完善ActiveReport_ReportStart 方法
动态设置列宽,并修改相关数据控件的坐标值。
public void ActiveReport_ReportStart()
{
float oldWidth = 0;
float newWidth = GetColumnWidth();
// 查找到产品名称列
ARControl lbHeader = null;
foreach (ARControl item in this.pageHeader.Controls)
{
if (item.Name == "lbHProductName")
{
oldWidth = item.Width;
item.Width = newWidth;
lbHeader = item;
}
}
foreach (ARControl item in this.pageHeader.Controls)
{
if (item.Name.StartsWith("lbH") & item.Location.X > lbHeader.Location.X)
{
item.Location = new PointF(item.Location.X + newWidth - oldWidth, item.Location.Y);
}
}
foreach (ARControl item in this.pageHeader.Controls)
{
if (item.Name == "txtDProductName")
{
oldWidth = item.Width;
item.Width = newWidth;
lbHeader = item;
}
}
foreach (ARControl item in this.detail.Controls)
{
if (item.Name == "txtDProductName")
{
item.Width = newWidth;
}
else if (item.Name.StartsWith("txtD") & item.Location.X > lbHeader.Location.X)
{
item.Location = new PointF(item.Location.X + newWidth - oldWidth, item.Location.Y);
}
}
}
源码下载:
您在使用产品过程中有任何疑问,可以登录葡萄城开发者社区和经验丰富的技术工程师、ActiveReports开发人员交流:了解更多。
了解ActiveReports产品更多特性:
下载产品体验产品功能:
ActiveReports 报表控件| 下载试用
ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具为全球超过 300,000 开发人员提供了全面的报表开发服务。
您对ActiveReports产品的任何技术问题,都有技术支持工程师提供1对1专业解答,点击此处即可发帖提问>>技术支持论坛
葡萄城热门产品
活字格
打通现有软件,快速定制面向未来的个性化应用

SpreadJS
可嵌入您系统的在线Excel的纯前端表格控件

Wyn商业智能
可与企业自有系统深度集成,增强数据分析的 BI 工具
