找回密码
 立即注册

QQ登录

只需一步,快速开始

风过无痕

注册会员

2

主题

4

帖子

59

积分

注册会员

积分
59
  • 55

    金币

  • 主题

  • 帖子

最新发帖
风过无痕
注册会员   /  发表于:2012-12-19 11:12  /   查看:6020  /  回复:3
最近遇到了小问题,请教一下各位:设计如图1,然后给名称、数量、用途绑定字段
问题1:在名称下绑定字段“name”,要求他下面的所有值所在单元格样式和这个绑定字段“name”首行单元格样式一致,比如,我在图1中设置的居中,下面所有对应的该列的值都应该居中,不知道怎么做这个操作,希望各位大神给予帮助。效果如图2所示
问题2:在图1中设计的中间显示值是三行,第四行是总计和负责人,当我绑定值的结果集数目超出三行时,会将第四行“总计和负责人”所在行覆盖掉,效果如图3,想要的效果如图2,把第四行的“总计和负责人”那行始终保持在最后一行,不能被覆盖。
望各位大神帮忙一下,最好能有个demo,更容易理解。谢谢!

图1.jpg

11.45 KB, 下载次数: 613

图2.jpg

15.53 KB, 下载次数: 579

图3.jpg

16.83 KB, 下载次数: 615

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-19 13:34:00
沙发
回复 1楼风过无痕的帖子

附件中的例子简单演示了该功能的实现方法,你可以参考:

7418_Template.zip (11.03 KB, 下载次数: 779)
回复 使用道具 举报
风过无痕
注册会员   /  发表于:2012-12-19 15:49:00
板凳

FpSpread 数据行覆盖和样式获取

回复 2楼dof的帖子

您好:
    很感谢你的demo,但是还有有点不是很理解的地方。
// 根据数据源添加行数
            if (dt.Rows.Count > 3)
            {
                fpSpread1.ActiveSheet.Rows.Add(3, dt.Rows.Count - 3);
            }
            // 设置新增行的样式
            for (int r = 0; r < dt.Rows.Count - 1; r++)
            {
                fpSpread1.ActiveSheet.CopyRange(2, 0, r + 3, 0, 1, 5, false);
            }
比如,if(dt.Rows.Count>3)这个3是指中间那三行需要赋值的行,但是,我这个设计是从excel中加载进来的,就是说这个三行实际上是不确定的;同时这个Add方法里面的参数,第一个参数不是行的索引吗?从3开始,那也就是第四行,对吗?后面那个参数是添加行的个数,这个地方如果dt.Rows.Count - 3是2,这个前提是你知道还缺少2行,才够数据的显示完,刚好是5行。但是这个问题还是刚才那个问题,不知道我中间空余的行数。
第二个问题:fpSpread1.ActiveSheet.CopyRange(2, 0, r + 3, 0, 1, 5, false);这个地方既然是复制样式,在复制每行每列的样式时,按道理里面的参数应该不是固定的才对啊,这两个地方不是很理解,麻烦解释下。谢谢!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-19 16:30:00
地板
回复 3楼风过无痕的帖子

风过无痕 你好

你说的很对,在示例中有两个动态数值我用了固定值,第一个是空行的数量,第二个是设置过样式的行索引。

空行数量:这可能无法完全依靠代码获取究竟有多少空行,因为只有在一定规则下才知道有多少空行,比如:只留一个有样式的空行,也就是图片1中的第3行;要么留固定行数的空行;或者在程序中自己计算有多少空行,从通过代码统计【名称】和【总计:】之间的行数。相比之下,我觉得前两种是业务规则的限制,如果没有这样的限制,全靠第三种方法来计算难度会更大一些。总而言之,在设计模板时要制定一定的规则。这样我们才能通过代码+业务规则来解析模板中的设置。

设置过样式行的索引值:和第一个问题相似,需要在一定的模板设计规则前提下来获取行索引。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部