找回密码
 立即注册

QQ登录

只需一步,快速开始

afei_liuge
金牌服务用户   /  发表于:2023-11-1 17:02  /   查看:3005  /  回复:4
1金币
当点击表头排序后,GetArray方法获取的数据的顺序跟排序后不一致。


如ID列为第0列 , fpSpreadSheet.GetArray(0, 0, this.fpSpreadSheet.Rows.Count, 1) 获取后的数据 ,与排序 后的数据顺序不一样。 这个要怎么处理才可以是一致的?

最佳答案

查看完整内容

经研发确认,这是预期行为。旧的列排序功能添加了用于排序的行映射索引,但不会实际更改单元格值。调用 GetArray 时,它会从 model 返回数据,并且不会更改值。 新的区域排序功能,正是由于值实际上移动了(相当于重新设置),所以才比较慢。 针对老的方式,如果要获取排序结果,可以考虑通过下面的办法

4 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-11-1 17:02:55
来自 5#
经研发确认,这是预期行为。旧的列排序功能添加了用于排序的行映射索引,但不会实际更改单元格值。调用 GetArray 时,它会从 model 返回数据,并且不会更改值。

新的区域排序功能,正是由于值实际上移动了(相当于重新设置),所以才比较慢。


针对老的方式,如果要获取排序结果,可以考虑通过下面的办法

  1.       SheetView sheetView = fpSpread1.Sheets[0];
  2.       int rc = sheetView.RowCount;
  3.       object[,] values = sheetView.GetArray(0, 0, rc, 1);
  4.       object[,] sortedValues = new object[rc, 1];
  5.       for (int modelRow = 0; modelRow < rc; modelRow++)
  6.       {
  7.         int viewRow = sheetView.GetViewRowFromModelRow(modelRow);
  8.         sortedValues[viewRow, 0] = values[modelRow, 0];
  9.       }
复制代码
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-11-1 18:33:50
2#
需要调研一下,明天给你结果
回复 使用道具 举报
afei_liuge
金牌服务用户   /  发表于:2023-11-6 10:07:51
3#
Richard.Ma 发表于 2023-11-1 18:33
需要调研一下,明天给你结果

你好,Richard.Ma ,现在有结果吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-11-6 16:02:38
4#
你好,这个问题目前更像是产品的bug,已经提交给了研发,等待研发那边的调研结果
SPNET-34927,

临时的解决办法的话,建议通过for循环,遍历单元格,通过getValue来取值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部