找回密码
 立即注册

QQ登录

只需一步,快速开始

lmm1508561

高级会员

7

主题

36

帖子

1377

积分

高级会员

积分
1377

活字格认证

[已处理] 求助问题

lmm1508561
高级会员   /  发表于:2012-3-19 14:45  /   查看:11757  /  回复:27
麻烦版主了,在做测试但中遇到好多问题,希望版主能帮我解决一下.

问题1、这种模式下(this.FpSpread1.Sheets[0].SelectionPolicy = FarPoint.Web.Spread.Model.SelectionPolicy.MultiRange;不是这种模式也有这种情况)选中整行或整列的坐标取值一直是行头或列头的单元格

问题2、上次问道控件宽度和高度百分比为100%时最大化或还原时卡死的原因你给出解决方法是 加上<div style="width: 100%; height: 100%; position:absolute ;" > 但是加上这句话时,我在单元格填入一个数据,所有数据行被隐藏了,只剩下个表头。

问题3、这种模式下(this.FpSpread1.Sheets[0].SelectionPolicy = FarPoint.Web.Spread.Model.SelectionPolicy.MultiRange; 不是这种模式也有这种情况)连续选中几个单元格时,有时获取的单元格是箭头所指的单元格。
问题4、windows 2003 enterprise Editon Service Pack 1  安装时出现一下错误

jpg

jpg

27 个回复

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

回复 1# lmm1508561 的帖子

lmm1508561  你好,

问题 2 没有重现,请发 Demo 到论坛调试。

问题 4 解决办法:http://gcdn.grapecity.com/showtopic-3264.html
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-19 16:44:00
板凳

回复 1# lmm1508561 的帖子

lmm1508561 你好,
这是我们之前的解决方案:

  1.             var spread = document.getElementById("FpSpread1");
  2.             var ranges = spread.GetSelectedRanges();
  3.             for (var i = 0; i < ranges.length; i++) {
  4.                 var range = rgs[i];
  5.                 alert(range.row + ", " + range.col + ", " + range.rowCount + ", " + range.colCount);
  6.             }
复制代码
如果选择列头或行头我们可以进行以下判断:

  1.     <script type="text/javascript">

  2.         function Button1_onclick() {
  3.             var spread = document.getElementById("FpSpread1");
  4.             var ranges = spread.GetSelectedRanges();
  5.             for (var i = 0; i < ranges.length; i++) {
  6.                 var range = ranges[i];
  7.                 if (range.row == -1) {
  8.                     alert("通过点击列头选择列" + range.col);
  9.                     alert("单元格范围为:" + "Cell[" + "0," + range.col + "]" + FpSpread1.GetRowCount() +"行"+ "1列");

  10.                 }
  11.                 else if (range.col == -1) {
  12.                     alert("通过点击行头选择列" + range.row);
  13.                     alert("单元格范围为:" + "Cell[" + range.row + ",0" + "]" + "1行" + FpSpread1.GetColCount()+"列");
  14.                 }
  15.                 else {
  16.                     alert(range.row + ", " + range.col + ", " + range.rowCount + ", " + range.colCount);
  17.                 }
  18.             }
  19.         }

  20.     </script>
复制代码
关于问题 2,不好意思,我没能重现你的问题,能否发 DEMO 到论坛调试?
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-20 10:36:00
地板
我重新把未解决的问题排列了一下 然后把所有的问题也放到这个demo里面了。希望版主帮解决一下。
问题1、 控件宽度和高度百分比为100%时最大化或还原时卡死的原因你给出解决方法是 加上<div style="width: 100%; height: 100%; position:absolute ;" > 最大化/还原 在vs2005上还是有问题 ,在vs2008上在填数据时,数据行就被隐藏。

问题2、 this.FpSpread1.Sheets[0].Cells[0,0,1,1].Font.Name 或 .Font.Bold 或 Font.Size等等 只要对font进行设置时 如果选择多个单元格时 只会对选中其中的一个单元格进行了设置 其他的没发生变化。

问题3、 设置公式如 A1=2 A2=3 A3=4  this.FpSpread1.Sheets[0].Cells[2,0,2,0] = SUM(A1:A3) ;   设置好之后  A【2,0】单元格的值是0  设置公式也没变化一直为0

问题4、 数据导出后在打开(xml和excel都这样),数据丢失,加载进来没有数据。

demo : WebSite1.rar (1.97 MB, 下载次数: 635)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-20 18:37:00
5#

回复 4# lmm1508561 的帖子

lmm1508561 你好,
问题 2 验证确实如此,目前我们取得了 CellRange ,可以逐个设置单元格。其他问题正在调查中,明天回复。
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-21 09:28:00
6#
设置边框,也是如此问题。左边框和上边框设置不上去。没效果
  1. this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[3]) - 1].Border.BorderStyle = BorderStyle.Solid;
  2. this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[3]) - 1].Border.BorderColor = System.Drawing.Color.Black;
  3. this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[3]) - 1].Border.BorderSize = 1;
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-21 13:42:00
7#

回复 6# lmm1508561 的帖子

lmm1508561 你好,

1. 关于 问题2 ,关于 CellRange 的 Border 、Font 属性都需要以单元格为单位设置。

2.后台设置公式需要设置,使 Spread 自动计算:
  1.    this.FpSpread1.ClientAutoCalculation = true;
复制代码
3.关于保存问题,需要在保存前调用:
  1.        this.FpSpread1.SaveChanges();
复制代码
回复 使用道具 举报
lmm1508561
高级会员   /  发表于:2012-3-22 09:46:00
8#
公式和保存的问题都可以实现。 谢谢版主。

问题1:控件宽度和高度百分比为100%时最大化或还原时卡死的原因你给出解决方法是 加上<div style="width: 100%; height: 100%; position:absolute ;" > 最大化/还原 在vs2005上还是有问题 ,在vs2008上在填数据时,数据行就被隐藏。

问题2:设置边框,左边框和上边框设置不上去。没效果
  1. this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[3]) - 1].Border.BorderStyle = BorderStyle.Solid;

  2. this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[3]) - 1].Border.BorderColor = System.Drawing.Color.Black;

  3. this.FpSpread1.Sheets[0].Cells[int.Parse(s[0]), int.Parse(s[1]), int.Parse(s[0]) + int.Parse(s[2]) - 1, int.Parse(s[1]) + int.Parse(s[3]) - 1].Border.BorderSize = 1;
复制代码
这两个问题也能给我个回复吗
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-22 21:16:00
9#

回复 8# lmm1508561 的帖子

lmm1508561 你好,
你的问题已经查收,明天回复。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-3-23 14:50:00
10#

回复 8# lmm1508561 的帖子

lmm1508561 你好,
关于边框设置方法如下:
  1. // 单元格边框
  2.                         case &quot;Border&quot;:
  3.                             for (int j = int.Parse(s[0]); j &lt; int.Parse(s[0])+int.Parse(s[2]); j++)
  4.                             {
  5.                                 for (int k = int.Parse(s[1]); k &lt; int.Parse(s[1])+int.Parse(s[3]); k++)
  6.                                             {
  7.                                     this.FpSpread1.Sheets[0].Cells[j,k].Border.BorderStyle = BorderStyle.Solid;
  8.                                     this.FpSpread1.Sheets[0].Cells[j,k].Border.BorderColor = System.Drawing.Color.Black;
  9.                                     this.FpSpread1.Sheets[0].Cells[j,k].Border.BorderSize = 1;
  10.                                             }
  11.                             }
  12.                             break;
复制代码
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部