antd table sort时能不能保证第一行永远在表头呢

发布于 2022-09-12 04:22:44 字数 100 浏览 16 评论 0

表格里第一行是总览行,需要一直置顶,但是自带的sorter排序会把他加进去一起排序,假如给第一行加一个最大的权重,升序的时候又回排到最后一行,希望能保证这一行永远在第一行不变,怎么办呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

栖竹 2022-09-19 04:22:44

我大概实现了一下,思路就是

  1. 对于第一行会有一个独有的标记,能让我在sorter函数里面知道这是第一行
  2. 在sorter里面异步修改排序的值,使其永远保证最大或者最小,异步保证本次排序不受影响

const columns = [
    {
        title: 'test',
        dataIndex: 'test',
        sorter: (a, b) => {
            const result = a.num - b.num;
            setTimeout(() => {
                if (a.test === 'total') {
                    a.num = 0 - a.num;
                }
                if (b.test === 'total') {
                    b.num = 0 - b.num;
                }
                console.log(a, b);
            });
            return result;
        }
    }
];

const dataSource = [
    { test: 'total', num: -1000 },
    { test: '1', num: 1 },
    { test: '22', num: 2 },
    { test: '33', num: 33 },
    { test: '4', num: 4 }
];

<Table columns={columns} dataSource={dataSource} rowKey="test"/>
南冥有猫 2022-09-19 04:22:44

我刚试了一下,好像涉及相关排序的,返回0就行了

/***
 * 固定首行排序
 * 例如:默认如果对象有dateline='总计则不参与排序'
 * @param name 排序字段
 * @param fixkey 不参与排序的key
 * @param fixvalue 不参与排序的value
 */

const handlefixsort = (name, fixkey = 'dateline', fixvalue = '总计') => {
  return (a, b) => {
    if (a[fixkey] === fixvalue || b[fixkey] === fixvalue) return 0
    return a[name] - b[name]
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文