当前位置: 首页 > 知识库问答 >
问题:

javascript - Vuetify3 v-data-table-virtual 禁用排序设置不生效?

上官高畅
2024-04-17

vuetify3的v-data-table-virtual表格中的表头如何禁用排序?

以下是目前的代码

<v-data-table-virtual                        :headers="headers"                        :items="dataResult"                      >                        <template v-slot:item.expense="{item}">                          {{ item.expense }}                          <span style="color: red" v-if="item.isLargeRepair"                            >(修繕含)</span                          >                        </template>                      </v-data-table-virtual>script:headers: [            {              title: '',              key: 'time',              sortable:false,            },            {              title: '年間収入',              key: 'income'            },            {              title: '年間支出',              key: 'expense'            },            {              title: 'CF',              key: 'cashFlow'            },            {              title: '累計CF',              key: 'cumulativeCashFlow'            },            {              title: '最終売却損益',              key: 'lastFlow'            }          ],

根据官方给出的文档,我把sortable设成false。但是实际上表头还是能排序,可能是哪里出了问题吗?

顺带一个问题,为什么文档里给出的说明都写着readonly?这个属性不应该是可以写的吗。以下官方文档的片段。

  readonly sortable?: boolean | undefined  readonly sort?: DataTableCompareFunction<any> | undefined  readonly sortRaw?: DataTableCompareFunction<any> | undefined  readonly filter?: FilterFunction | undefined

vuetify table的链接:https://vuetifyjs.com/zh-Hans/api/v-data-table-virtual/#props

共有2个答案

陆宏扬
2024-04-17

你需要为每一列设置 sortable: false

const headers = [  {    title: '时间',    key: 'time',    sortable: false,  },  {    title: '年間収入',    key: 'income',    sortable: false,  },  {    title: '年間支出',    key: 'expense',    sortable: false,  },  {    title: 'CF',    key: 'cashFlow',    sortable: false,  },  {    title: '累計CF',    key: 'cumulativeCashFlow',    sortable: false,  },  {    title: '最終売却損益',    key: 'lastFlow',    sortable: false,  },]

文档中的 readonly 表示 vuetify 认为这些属性是只读的,即组件内部不会修改他们,但是你仍然可以在外部修改这些属性:

setInterval(() => {    headers.value[0].sortable = !headers.value[0].sortable}, 3000)
梁和颂
2024-04-17

你的代码看起来应该是正确的,Vuetify 的 v-data-table-virtual 组件的 headers 属性中的 sortable 属性应该能够用来控制每一列的排序。在你的代码中,你已经将 time 列的 sortable 属性设置为 false,这意味着该列应该不能排序。

然而,如果排序仍然生效,可能的原因有几个:

  1. 可能是你的 Vuetify 版本有问题,你可能需要升级或降级你的 Vuetify 版本。
  2. 你可能在其它地方对表格进行了排序操作,例如,你可能在 v-data-table-virtual 组件上使用了 @sort-change 事件并手动改变了排序。
  3. 你的数据可能已经在获取时就已经排序了,因此即使你在 headers 中将 sortable 设置为 false,表格显示的还是排序后的数据。

至于你的第二个问题,Vuetify 文档中的 readonly 指的是这些属性是只读的,也就是说,你不能在运行时改变这些属性的值。这些属性在组件创建时就已经确定,并且不能再被改变。然而,这并不意味着你不能在组件的初始化阶段设置这些属性的值。在你的代码中,你应该能够在 headers 中设置 sortablesortsortRawfilter 的值。

我建议你检查一下上述可能的问题,如果还不能解决,你可能需要更详细地查看你的代码,或者尝试在 Vuetify 的社区或官方论坛中寻求帮助。

 类似资料:
  • 本文向大家介绍javascript实现Table排序的方法,包括了javascript实现Table排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现Table排序的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。

  • 本文向大家介绍Yii中CGridView禁止列排序的设置方法,包括了Yii中CGridView禁止列排序的设置方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii中CGridView禁止列排序的设置方法。分享给大家供大家参考,具体如下: Yii中CGridView的功能是用来显示的数据列表。它支持排序,分页,和AJAX数据请求。 下面的代码演示了CGridView禁止列排序的设置方法

  • 请教大佬们个问题,vue2中我有一个基础的el-table表格,表格里分置顶区域和非置顶区域,需求是置顶区域之间可以互相拖拽排序,非置顶区域可以互相拖拽排序,非置顶和置顶之间不可拖拽排序, 比如1.2.3条数据是置顶的,可以互相拖拽排序,4.5.6是非置顶数据,可以拖拽排序,但1.2.3和4.5.6之间不可互相拖拽,感谢各位大佬解惑

  • fixed-data-table 是一个用于以灵活且强有力的方式建立并显示数据的 React 组件。它支持标准的桌面特征,像头条、行、列、头条组、滚动列。此组件在处理数千行数据的时不会牺牲性能。平滑地滚定是 FixedDataTable 的首要目的,它的结构保证了它的灵活性和可扩展性。 示例代码: var React = require('react');var FixedDataTable = 

  • Bootstrap Data Table 是 jQuery 表格插件,可以对表格进行排序,分页和过滤。Bootstrap Data Table 使用 Bootstrap 作为样式,使用 FontAwesome 图标作为表格图标。 在线演示

  • 我需要我的使其所有列都可排序,但我不希望通过Shift单击列使其成为多列可排序。有什么办法可以防止这种情况发生吗?