找回密码
 立即注册

QQ登录

只需一步,快速开始

阿雷斯

注册会员

2

主题

8

帖子

20

积分

注册会员

积分
20
  • 110

    金币

  • 2

    主题

  • 8

    帖子

最新发帖
阿雷斯
注册会员   /  发表于:2022-11-3 17:31  /   查看:5173  /  回复:12
1金币
技术小白求教问题:

所用的spread version 为11
利用foreach给指定的表单增加筛选功能,筛选的AutoFilterMode为EnhancedContextMenu


                    spdEcsList.ActiveSheet.Columns[i].Width = spdEcsList.ActiveSheet.Columns[i].Width + 30;
                    spdEcsList.ActiveSheet.Columns[i].AllowAutoFilter = true;
                    spdEcsList.ActiveSheet.AutoFilterMode = FarPoint.Win.Spread.AutoFilterMode.EnhancedContextMenu;
                    spdEcsList.ActiveSheet.Columns[i].Locked = true;

但是一旦筛选后:去调用                spdEcsList.ActiveSheet.Rows.Clear(); 会出现数组越界异常
很明显,Activesheet中保留的都是筛选前的数据,难道不应该是当前界面显示的数据么
例:点击查询显示100条数据,利用筛选功能过滤还剩20条,再次点击查询会调用rows.clear(),然后数组越界异常

最佳答案

查看完整内容

验证了一下,确实能重现问题,考虑到你们用的也是老版本,bug没法在老版本上修复, 建议可以用下面的代码来规避问题看看

12 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-3 17:31:20
来自 9#
验证了一下,确实能重现问题,考虑到你们用的也是老版本,bug没法在老版本上修复,

建议可以用下面的代码来规避问题看看

  1.             fpSpread1.ActiveSheet.ClearRowFilter();
  2.             fpSpread1.ActiveSheet.Rows.Clear();
  3.             fpSpread1.ActiveSheet.Columns[0].AllowAutoFilter = true;
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-3 19:01:47
2#
问题已经收到,明天早上验证后给你回复
回复 使用道具 举报
阿雷斯
注册会员   /  发表于:2022-11-7 13:09:11
3#
Richard.Ma 发表于 2022-11-3 19:01
问题已经收到,明天早上验证后给你回复

你好版主,有结论了么?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-7 16:47:22
4#
你好,目前以当前V15版本测试未能发现问题,在按照你说的方式设置后,对列进行了筛选,然后执行clear方法

判断可能是老版本的bug,建议升级Spread.NET版本到当前版本。

你可以先用当前版本测试验证一下看看,如果还有问题,请发我一个重现问题的demo
回复 使用道具 举报
阿雷斯
注册会员   /  发表于:2022-11-7 17:09:23
5#
Richard.Ma 发表于 2022-11-7 16:47
你好,目前以当前V15版本测试未能发现问题,在按照你说的方式设置后,对列进行了筛选,然后执行clear方法
...

我们的项目已经引用了spread 11,不可能轻易的升级版本了,这个难道没有办法解决了么,或者有什么方法可以迂回解决问题,怎么获取利用筛选功能过滤后的Activesheet里的变量
回复 使用道具 举报
阿雷斯
注册会员   /  发表于:2022-11-7 17:50:40
6#
很明显,筛选后只有几条数据,但是RowCount却有很多,如此情况下调用clear肯定报错,能不能提供现有功能的方法来解决此问题

Debug截图

Debug截图
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-7 18:01:37
7#
我刚刚又专门安装了V11测试了一下,也没发现问题,建议你还是发一个重现问题的demo过来,估计是其他的代码影响

image.png641560058.png
image.png639203490.png
image.png190821227.png

WindowsFormsApp3.zip (17 MB, 下载次数: 1118)
回复 使用道具 举报
阿雷斯
注册会员   /  发表于:2022-11-8 09:17:44
8#
Richard.Ma 发表于 2022-11-7 18:01
我刚刚又专门安装了V11测试了一下,也没发现问题,建议你还是发一个重现问题的demo过来,估计是其他的代码 ...

非常感谢版主对我的问题的认真回答,我将版主的demo也下载下来进行了测试和运行,发现在特定情况下依然还是会越界异常,我觉得这种特殊情况很像我的代码

说一下测试流程:
如果筛选的过滤项中包含(空白),点击button就不会数组越界异常,但是一旦把空白点掉,再进行筛选后,就会出现越界异常,附带越界异常的报错提示码


************** 异常文本 **************
System.IndexOutOfRangeException: 索引超出了数组界限。
   在 FarPoint.Win.Spread.SheetView.a(IRowFilter A_0, Boolean A_1, Boolean A_2, Int32 A_3)
   在 FarPoint.Win.Spread.SheetView.InvalidateRowFilter(Boolean clear, Boolean forceInvalidate)
   在 FarPoint.Win.Spread.Model.SheetDataModelEventHandler.Invoke(Object sender, SheetDataModelEventArgs e)
   在 FarPoint.Win.Spread.Model.BaseSheetDataModel.OnChanged(SheetDataModelEventArgs e)
   在 FarPoint.Win.Spread.Model.DefaultSheetDataModel.OnChanged(SheetDataModelEventArgs e)
   在 FarPoint.Win.Spread.Model.DefaultSheetDataModel.FireChanged(Int32 row, Int32 column, Int32 rowCount, Int32 columnCount, SheetDataModelEventType type)
   在 FarPoint.Win.Spread.SheetView.ar(Int32 A_0, Int32 A_1)
   在 GrapeCity.Spreadsheet.ActionData.ExecuteFinalize()
   在 GrapeCity.Spreadsheet.Worksheet.RemoveRows(Int32 row, Int32 count)
   在 GrapeCity.Spreadsheet.Worksheet.set_RowCount(Int32 value)
   在 rc.z(Int32 A_0)
   在 WindowsFormsApp3.Form1.button1_Click(Object sender, EventArgs e) 位置 D:\test\Form1.cs:行号 26
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 已加载的程序集 **************
mscorlib
    程序集版本:4.0.0.0
    Win32 版本:4.8.4515.0 built by: NET48REL1LAST_C
    基本代码:file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
WindowsFormsApp3
    程序集版本:1.0.0.0
    Win32 版本:1.0.0.0
    基本代码:file:///D:/test/bin/Debug/WindowsFormsApp3.exe
----------------------------------------
System.Windows.Forms
    程序集版本:4.0.0.0
    Win32 版本:4.8.4515.0 built by: NET48REL1LAST_C
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    程序集版本:4.0.0.0
    Win32 版本:4.8.4488.0 built by: NET48REL1LAST_C
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    程序集版本:4.0.0.0
    Win32 版本:4.8.4390.0 built by: NET48REL1LAST_C
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
FarPoint.Win.Spread
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/FarPoint.Win.Spread/v4.0_11.45.20183.0__327c3516b1b18457/FarPoint.Win.Spread.dll
----------------------------------------
System.Core
    程序集版本:4.0.0.0
    Win32 版本:4.8.4515.0 built by: NET48REL1LAST_C
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
FarPoint.Win
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/FarPoint.Win/v4.0_11.45.20183.0__327c3516b1b18457/FarPoint.Win.dll
----------------------------------------
System.Configuration
    程序集版本:4.0.0.0
    Win32 版本:4.8.4190.0 built by: NET48REL1LAST_B
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    程序集版本:4.0.0.0
    Win32 版本:4.8.4084.0 built by: NET48REL1
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
GrapeCity.Spreadsheet.Win
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/GrapeCity.Spreadsheet.Win/v4.0_11.45.20183.0__327c3516b1b18457/GrapeCity.Spreadsheet.Win.dll
----------------------------------------
GrapeCity.Spreadsheet
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/GrapeCity.Spreadsheet/v4.0_11.45.20183.0__327c3516b1b18457/GrapeCity.Spreadsheet.dll
----------------------------------------
GrapeCity.CalcEngine
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/GrapeCity.CalcEngine/v4.0_11.45.20183.0__327c3516b1b18457/GrapeCity.CalcEngine.dll
----------------------------------------
FarPoint.Localization
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/FarPoint.Localization/v4.0_11.45.20183.0__327c3516b1b18457/FarPoint.Localization.dll
----------------------------------------
FarPoint.Win.Spread.resources
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/FarPoint.Win.Spread.resources/v4.0_11.45.20183.0_zh-CN_327c3516b1b18457/FarPoint.Win.Spread.resources.dll
----------------------------------------
System.Data
    程序集版本:4.0.0.0
    Win32 版本:4.8.4455.0 built by: NET48REL1LAST_C
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
FarPoint.CalcEngine
    程序集版本:11.45.20183.0
    Win32 版本:11.45.20183.0
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/FarPoint.CalcEngine/v4.0_11.45.20183.0__327c3516b1b18457/FarPoint.CalcEngine.dll
----------------------------------------
Accessibility
    程序集版本:4.0.0.0
    Win32 版本:4.8.4084.0 built by: NET48REL1
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
mscorlib.resources
    程序集版本:4.0.0.0
    Win32 版本:4.8.4084.0 built by: NET48REL1
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    程序集版本:4.0.0.0
    Win32 版本:4.8.4084.0 built by: NET48REL1
    基本代码:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT 调试 **************
要启用实时(JIT)调试,
该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置
jitDebugging 值。
编译应用程序时还必须启用
调试。

例如:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

启用 JIT 调试后,任何未经处理的异常
都将被发送到在此计算机上注册的 JIT 调试程序,
而不是由此对话框处理。



参考一.png
异常2.png
回复 使用道具 举报
阿雷斯
注册会员   /  发表于:2022-11-8 10:59:39
10#
Richard.Ma 发表于 2022-11-8 10:38
验证了一下,确实能重现问题,考虑到你们用的也是老版本,bug没法在老版本上修复,

建议可以用下面的代 ...

非常感谢版主的回答,最后再补充一个问题么,如果在筛选后,有办法将过滤后的rows全选出来么,例如通过一个button,点击后,选中过滤后的rows(或者将rows的第一列设置为checkbox类型,选中checkbox)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部