afei_liuge 发表于 2023-9-14 16:43:14

fpSpread.ActiveSheet.SortRange 方法 性能问题。

使用fpSpread.ActiveSheet.SortRange 方法 进行排序时,响应速度非常慢,100行数据 需要1秒多钟, 如果是ID列 时间会更久。 。

Richard.Ma 发表于 2023-9-14 16:43:15

和你微信沟通了一下,实际的需求是整个sheet整体多列排序,那么直接进通过表头排序就行,表头也是支持多列排序的,没必要使用区域排序。

按照你的性能需求,SortRange耗时肯定是没法满足的

Richard.Ma 发表于 2023-9-14 19:05:28

正常100行的数据不会有这个问题

从此前你这边提到几个帖子问题来看,都和绑定的数据,以及做的一些设置有关系,所以还是得你发一个demo上来,或者给出明确的重现问题的方法

afei_liuge 发表于 2023-9-14 19:08:44

Richard.Ma 发表于 2023-9-14 19:05
正常100行的数据不会有这个问题

从此前你这边提到几个帖子问题来看,都和绑定的数据,以及做的一些设置 ...

FarPoint.Win.Spread.SortInfo[] sorts = new FarPoint.Win.Spread.SortInfo;
                for (int i = 0; i < this.fpSpread.ActiveSheet.Columns.Count; i++)
                {
                  if (item.Key == this.fpSpread.ActiveSheet.Columns.Label)
                  {
                        if (item.Value == OrderByType.Desc)
                        {
                            this.fpSpread.ActiveSheet.Columns.SortIndicator = FarPoint.Win.Spread.Model.SortIndicator.Descending;
                            sorts = new FarPoint.Win.Spread.SortInfo(i, false);
                        }
                        else
                        {
                            this.fpSpread.ActiveSheet.Columns.SortIndicator = FarPoint.Win.Spread.Model.SortIndicator.Ascending;
                            sorts = new FarPoint.Win.Spread.SortInfo(i, true);
                        }

                        break;
                  }
                }

                this.fpSpread.ActiveSheet.SortRange(0, 0, this.fpSpread.ActiveSheet.RowCount, this.fpSpread.ActiveSheet.ColumnCount, true, sorts);

Richard.Ma 发表于 2023-9-15 14:13:39

测试1000行大概用时300ms


SortRange性能本身比直接对表头排序的性能差。因为是对区域进行排序的

afei_liuge 发表于 2023-9-15 17:14:41

Richard.Ma 发表于 2023-9-15 14:13
测试1000行大概用时300ms




选择的列数据大都一样,数据要有不一样的试试。字符串类型的性能马上就体现出来了。

afei_liuge 发表于 2023-10-10 14:58:37

Richard.Ma 发表于 2023-9-14 16:43
和你微信沟通了一下,实际的需求是整个sheet整体多列排序,那么直接进通过表头排序就行,表头也是支持多列 ...

表头只能单列排序,当点击一列头排序时,只会针对此排序。 不支持点击的所有列者进行排序。

Richard.Ma 发表于 2023-10-10 18:13:57


每次的排序都是以该列为依据,整行排序的,而排序结果实际都会保留。所以这里说的支持多列排序也是基于此
比如AB两列。先对B列倒序排序,然后再对A列倒序或者顺序排序。此时B列始终还是倒序(即是先按照A列排序,再按照B列排序)
更多列的话也是一样的。比如按照顺序对A,B,C列点击进行倒序排序。那么最后的排序结果就是先对C倒序,然后对B倒序,然后对A倒序


页: [1]
查看完整版本: fpSpread.ActiveSheet.SortRange 方法 性能问题。