找回密码
 立即注册

QQ登录

只需一步,快速开始

michael

银牌会员

22

主题

57

帖子

3974

积分

银牌会员

积分
3974

活字格认证

michael
银牌会员   /  发表于:2012-3-27 22:21  /   查看:6680  /  回复:5
1.如何设置ColumnFooter的样式 比如边框线 背景颜色之类的
2.加入ColumnFooter后 想做这样一件事情 就是设置一个数据明细部分的高度 如果明细部分高度小于这个高度的话 让数据明细部分和ColumnFooter正好衔接上 如果大于这个高度的话就加滚动条

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-3-28 14:31:00
沙发

回复 1# michael 的帖子

michael 你好,
1.ColumnFooter 样式可通过 NameStyle 类设置,参考代码:
  1.                 this.fpSpread1.Sheets[0].ColumnFooter.Visible = true;
  2.                 this.fpSpread1.Sheets[0].ColumnFooter.RowCount = 2;
  3.                 FarPoint.Win.Spread.NamedStyle footerStyle = new FarPoint.Win.Spread.NamedStyle();
  4.                 footerStyle.Border = new FarPoint.Win.LineBorder(System.Drawing.Color.Red, 1);
  5.                 footerStyle.BackColor = System.Drawing.Color.Green;
  6.                 footerStyle.Name="footerStyle";
  7.                 this.fpSpread1.NamedStyles.Add(footerStyle);
  8.                 this.fpSpread1.Sheets[0].ColumnFooter.DefaultStyleName = "footerStyle";
复制代码

2.该 case 可以通过 js 来实现,代码如下:
  1.   function Button1_onclick() {
  2.             //获取表单 table
  3.             var viewPort = this.document.getElementById("FpSpread1_view");
  4.             var viewPortHeight = viewPort.style.height;
  5.             var spread = document.all("FpSpread1");
  6.            //获取单元格部分  table
  7.             var bodyTable = this.document.getElementById("FpSpread1_viewport");
  8.             var bodyTableHeight = bodyTable.style.height;
  9.             //获取列头 table
  10.             var colHeaderTable = this.document.getElementById("FpSpread1_rh");
  11.             if (bodyTableHeight < viewPortHeight)
  12.             {
  13.                 var rowcount = spread.GetRowCount();
  14.                 for (var i = 0; i < rowcount; i++)
  15.                 {
  16.                     //填写适当值
  17.                     //设置 列头 高度
  18.                     colHeaderTable.rows(i).style.height = "40px";
  19.                     //设置 列 高度
  20.                     bodyTable.rows(i).style.height = "40px";
  21.                 }
  22.             }
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2012-4-6 09:18:00
板凳
关于问题2 我大概看懂版主的意思了 但是这样是通过修改行高 我想在不改变每个行高的情况下去动态设置 能否做到呢。
我现在是这么处理的  然后列头高+数据部分高度(行高*数据行)+页脚高=spread总高度
但是发现一个问题就是 这样做也不能完全把页脚和数据部分衔接上 好像还有一个空隙。。请教下版主了 呵呵。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-6 18:36:00
地板

回复 3# michael 的帖子

michael 你好,
不好意思 ,我这边没有重现该问题,页脚和数据部分衔接上好像还有一个空隙能否发个 Demo 到论坛调试呢?
回复 使用道具 举报
michael
银牌会员   /  发表于:2012-4-20 09:41:00
5#
其实就是想不通过修改列的高度来实现 有没有好的解决方案呢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-4-20 10:29:00
6#

回复 5# michael 的帖子

你好,按照你的思路,下面是我的代码,没有出现空隙:

  1. protected void Button1_Click(object sender, EventArgs e)
  2.         {
  3.             int spreadHeight = Convert.ToInt32(this.FpSpread1.Height.Value);
  4.             //27 为 CommandBar 高度
  5.             int sheetHeight = spreadHeight - this.FpSpread1.Sheets[0].ColumnHeader.Height-27;

  6.             int average = sheetHeight / (this.FpSpread1.Sheets[0].RowCount + this.FpSpread1.Sheets[0].ColumnFooter.RowCount);

  7.             for (int i = 0; i < this.FpSpread1.Sheets[0].Rows.Count; i++)
  8.             {
  9.                 this.FpSpread1.Sheets[0].Rows[i].Height = average;
  10.             }
  11.             for (int i = 0; i < this.FpSpread1.Sheets[0].ColumnFooter.RowCount; i++)
  12.             {
  13.                 this.FpSpread1.Sheets[0].ColumnFooter.Rows[i].Height = average;
  14.             }
  15.         }
复制代码
所指的 页脚和数据部分衔接上好像还有一个空隙 可以发截图上来查看吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部