fpSpread.ActiveSheet.SortRange 方法 性能问题。
使用fpSpread.ActiveSheet.SortRange 方法 进行排序时,响应速度非常慢,100行数据 需要1秒多钟, 如果是ID列 时间会更久。 。和你微信沟通了一下,实际的需求是整个sheet整体多列排序,那么直接进通过表头排序就行,表头也是支持多列排序的,没必要使用区域排序。
按照你的性能需求,SortRange耗时肯定是没法满足的 正常100行的数据不会有这个问题
从此前你这边提到几个帖子问题来看,都和绑定的数据,以及做的一些设置有关系,所以还是得你发一个demo上来,或者给出明确的重现问题的方法 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); 测试1000行大概用时300ms
SortRange性能本身比直接对表头排序的性能差。因为是对区域进行排序的
Richard.Ma 发表于 2023-9-15 14:13
测试1000行大概用时300ms
选择的列数据大都一样,数据要有不一样的试试。字符串类型的性能马上就体现出来了。 Richard.Ma 发表于 2023-9-14 16:43
和你微信沟通了一下,实际的需求是整个sheet整体多列排序,那么直接进通过表头排序就行,表头也是支持多列 ...
表头只能单列排序,当点击一列头排序时,只会针对此排序。 不支持点击的所有列者进行排序。
每次的排序都是以该列为依据,整行排序的,而排序结果实际都会保留。所以这里说的支持多列排序也是基于此
比如AB两列。先对B列倒序排序,然后再对A列倒序或者顺序排序。此时B列始终还是倒序(即是先按照A列排序,再按照B列排序)
更多列的话也是一样的。比如按照顺序对A,B,C列点击进行倒序排序。那么最后的排序结果就是先对C倒序,然后对B倒序,然后对A倒序
页:
[1]