afei_liuge 发表于 2023-11-1 17:02:54

排序后,GetArray方法获取的数据的顺序跟排序后不一致

当点击表头排序后,GetArray方法获取的数据的顺序跟排序后不一致。


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

Richard.Ma 发表于 2023-11-1 17:02:55

经研发确认,这是预期行为。旧的列排序功能添加了用于排序的行映射索引,但不会实际更改单元格值。调用 GetArray 时,它会从 model 返回数据,并且不会更改值。

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


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

      SheetView sheetView = fpSpread1.Sheets;
      int rc = sheetView.RowCount;
      object[,] values = sheetView.GetArray(0, 0, rc, 1);
      object[,] sortedValues = new object;
      for (int modelRow = 0; modelRow < rc; modelRow++)
      {
      int viewRow = sheetView.GetViewRowFromModelRow(modelRow);
      sortedValues = values;
      }

Richard.Ma 发表于 2023-11-1 18:33:50

需要调研一下,明天给你结果

afei_liuge 发表于 2023-11-6 10:07:51

Richard.Ma 发表于 2023-11-1 18:33
需要调研一下,明天给你结果

你好,Richard.Ma ,现在有结果吗?

Richard.Ma 发表于 2023-11-6 16:02:38

你好,这个问题目前更像是产品的bug,已经提交给了研发,等待研发那边的调研结果
SPNET-34927,

临时的解决办法的话,建议通过for循环,遍历单元格,通过getValue来取值
页: [1]
查看完整版本: 排序后,GetArray方法获取的数据的顺序跟排序后不一致