飞飞龙女 發表於 2026-3-17 10:31:00

vue 表格 vxe-table 高亮行支持取消操作

<p>在使用 vxe-table 表格组件时,默认情况下,当用户点击某一行时,该行会高亮显示(即成为当前行),并且无法通过再次点击来取消高亮。这种交互适用于需要始终选中一行的场景。</p>
<p>但在某些业务场景下,可能需要允许用户取消选中当前高亮的行(例如,允许不选中任何行)。vxe-table 提供了灵活的配置来实现这一需求</p>
<h2 id="实现方式">实现方式</h2>
<p>通过设置 current-row-config.strict 参数为 false,即可允许取消当前高亮行的选中状态。当 strict 为 true(默认值)时,表格会强制始终存在一个高亮行;设置为 false 后,用户可以通过再次点击已高亮的行来取消高亮。</p>
<p><img src="https://img2024.cnblogs.com/blog/3766032/202603/3766032-20260317103034199-1296038898.png"></p>
<h2 id="代码">代码</h2>
<pre><code class="language-html">&lt;template&gt;
&lt;div&gt;
    &lt;vxe-grid v-bind="gridOptions" v-on="gridEvents"&gt;&lt;/vxe-grid&gt;
&lt;/div&gt;
&lt;/template&gt;

&lt;script setup&gt;
import { reactive } from 'vue'

const gridOptions = reactive({
height: 300,
rowConfig: {
    isCurrent: true,
    isHover: true
},
currentRowConfig: {
    strict: false
},
columns: [
    { type: 'seq', width: 70 },
    { field: 'name', title: 'Name' },
    { field: 'sex', title: 'Sex' },
    { field: 'age', title: 'Age' },
    { field: 'address', title: 'Address', showOverflow: true }
],
data: [
    { name: 'Test1', role: 'Develop', sex: 'Man', age: 28, content: 'test abc' },
    { name: 'Test2', role: 'Test', sex: 'Women', age: 41, content: 'Guangzhou' },
    { name: 'Test3', role: 'PM', sex: 'Man', age: 32, content: 'Shanghai' },
    { name: 'Test4', role: 'Designer', sex: 'Women', age: 24, content: 'Shanghai' }
]
})

const gridEvents = {
currentRowChange ({ row, oldValue, newValue }) {
    console.log(`行选中事件 ${row.name} 旧:`, oldValue, '新:', newValue)
}
}
&lt;/script&gt;
</code></pre>
<h2 id="参数说明">参数说明</h2>
<ul>
<li>rowConfig.isCurrent:启用当前行高亮(即选中标记)。
<ul>
<li>currentRowConfig.strict:是否强制保持一个当前行。true(默认):始终有一个高亮行,无法取消选中。false:允许通过再次点击已高亮行来取消选中,此时表格可以没有任何高亮行。</li>
</ul>
</li>
</ul>
<p>当 strict: false 时,currentRowChange 事件的 row 参数在取消选中时为 null,可根据此判断是否已无选中行。</p>
<p>https://vxetable.cn</p><br><br>
来源:https://www.cnblogs.com/leid6/p/19728179
頁: [1]
查看完整版本: vue 表格 vxe-table 高亮行支持取消操作