找回密码
 立即注册

QQ登录

只需一步,快速开始

jiangweihz

金牌服务用户

32

主题

80

帖子

760

积分

金牌服务用户

积分
760
jiangweihz
金牌服务用户   /  发表于:2017-1-17 15:51  /   查看:6976  /  回复:12
版主,我们上次提到的过滤后,复制粘贴性能慢的问题,你当时给了我们一个开关:((IManualRowFilterSupport)fpSpreadControl.ActiveSheet.RowFilter).IsManual = true;
这个的确解决了性能问题,但是现在新的问题来了,过滤后,复制某单元格,然后粘贴多行,发现未出现的行(被过滤的数据)的单元内容也被修改粘贴了,请帮助解决,谢谢!

12 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-17 17:43:14
沙发
重写ctrl c的action 忽略隐藏行

  1.             FarPoint.Win.Spread.InputMap im = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused, FarPoint.Win.Spread.OperationMode.Normal);
  2.             im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);         
  3.             fpSpread1.ClipboardOptions = FarPoint.Win.Spread.ClipboardOptions.NoHeaders;
  4.         }
复制代码
回复 使用道具 举报
jiangweihz
金牌服务用户   /  发表于:2017-1-18 10:26:43
板凳
谢谢,还有个小问题,我们把过滤开关打开后,修改过滤条件列,修改后的数据已经不符合过滤条件了,但是该行还存在,以前没有设置这个过滤开关的时候,是没有这个问题的
回复 使用道具 举报
jiangweihz
金牌服务用户   /  发表于:2017-1-18 10:33:15
地板
再加个问题,过滤后,批量删除操作,就是选择区域删除数据,也会把过滤的数据行(过滤未显示)删除
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-18 11:29:38
5#
删除的话您需要通过先获取到过滤出来的行,然后循环删除了。

fpSpread2.ActiveSheet.RowFilter.GetFilteredOutRowList获取过滤的行
回复 使用道具 举报
jiangweihz
金牌服务用户   /  发表于:2017-1-22 13:04:57
6#
版主:
//黏贴
           // im.Put(new FarPoint.Win.Spread.Keystroke(Keys.V, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardPasteAsStringSkipHidden);
            //复制
           // im.Put(new FarPoint.Win.Spread.Keystroke(Keys.C, Keys.Control), FarPoint.Win.Spread.SpreadActions.ClipboardCopyAsStringSkipHidden);
复制粘贴代码修改后
会造成粘贴事件中取范围永远只能取到一行,无法取到多行。
var Range = e.CellRange;

            SheetView view = MainSpread.GetActiveSheet();
            int intMainPlanNo = GetColumnIndex(view, "主计划号");
            var StarRowRange = MainSpread.GetActiveSheet().GetSpanCell(Range.Row, intMainPlanNo);
            var EndRowRange = MainSpread.GetActiveSheet().GetSpanCell(Range.Row + Range.RowCount - 1, intMainPlanNo);
中的“var Range = e.CellRange;”永远只有一条数据,请帮忙解决,谢谢!
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-22 15:35:43
7#
CellRange 被粘贴的区域,这个肯定是只有一个啊。多重区域是无法复制粘贴的。
回复 使用道具 举报
jiangweihz
金牌服务用户   /  发表于:2017-1-22 15:55:59
8#
版主,一行数据,也就是range里,存在起始行和终止行,这2个行号永远都相等
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-22 17:37:37
9#
GetSpanCell 是获取一个合并单元格的区域,不太清楚您主计划号 这列是如何合并的。 您期望获取到一个什么样的区域?

粘贴区域里其实行的行号就是range.row.结束行号是Range.Row + Range.RowCount - 1.
这个您写的没有问题。

回复 使用道具 举报
jiangweihz
金牌服务用户   /  发表于:2017-1-22 17:46:09
10#
我们取rowcount一直等于1,选择多行也是1
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部