找回密码
 立即注册

QQ登录

只需一步,快速开始

877121273

中级会员

116

主题

361

帖子

901

积分

中级会员

积分
901

微信认证勋章

877121273
中级会员   /  发表于:2015-12-28 15:38  /   查看:3864  /  回复:7
自定义报表怎样能让每一列自动适应大小

7 个回复

倒序浏览
877121273
中级会员   /  发表于:2015-12-28 16:07:00
沙发
附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-12-28 16:21:00
板凳
您好,

您的问题我们已经收到。由于验证需要时间,我们会在明天给您回复。
回复 使用道具 举报
877121273
中级会员   /  发表于:2015-12-29 10:54:00
地板
有答案了吗
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2015-12-29 15:33:00
5#
您好,
动态设置列宽,需要根据显示的列的数量计算列的Width 和Position 值,如显示N列,N列的总宽度为width,则列宽可计算为:Column.Width=Column.width*(this.PrintWidth / width) ,再根据每一列宽修改对应的Position 坐标。

代码如下:

for (int c = 0; c < cols.Count; c++)
            {
                 headers[c].Width = headers[c].Width * (this.PrintWidth / width);
                cols[c].Width = headers[c].Width;

                // 设置控件坐标
                if (tmp == null)
                {
                    // 设置需要显示的第一列坐标
                    headers[c].Location = new PointF(0, headers[c].Location.Y);
                    cols[c].Location = new PointF(headers[c].Location.X, cols[c].Location.Y);
                }
                else
                {
                    // 设置需要显示的非第一列坐标,应该为前一列坐标加上宽度
                    headers[c].Location = new PointF(tmp.Location.X + tmp.Width, headers[c].Location.Y);
                    cols[c].Location = new PointF(headers[c].Location.X, cols[c].Location.Y);
                }

           
        }
回复 使用道具 举报
877121273
中级会员   /  发表于:2015-12-29 16:29:00
6#
有完整一点的实例吗
回复 使用道具 举报
877121273
中级会员   /  发表于:2015-12-29 17:05:00
7#
你说的这个是设置列的宽度,每一列的宽度都是一样的吧?我说的是让报表的每一列的宽度自己去适应所显示的数据的宽度哦,就像图中的,每一列的宽度都是不一样的,根据数据的长度去改变列的宽度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2015-12-29 17:47:00
8#
您好,列宽无法实现自适应设置,需要自己根据字段的长度来进行计算。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部