下拉默认全选,选择展示对象的字段list

javascript 复制代码
<template>
  <div style="padding: 20px">
    <h3>opened + selection-changed </h3>

    <DxDropDownBox
      v-model="selectedItems"
      :show-clear-button="true"
      placeholder="请选择水果..."
      display-expr="name"
      value-expr="id"
      @opened="onOpened"
      width="400"
    >
      <template #content>
        <DxDataGrid
          ref="dataGrid"
          :data-source="dataSource"
          :hover-state-enabled="true"
          :height="250"
          :show-borders="false"
          @selection-changed="onSelectionChanged"
        >
          <DxColumn data-field="id" caption="编号" />
          <DxColumn data-field="name" caption="水果名称" />
          <DxColumn data-field="color" caption="颜色" />
          <DxSelection mode="multiple" />
        </DxDataGrid>
      </template>
    </DxDropDownBox>

    <div style="margin-top: 10px;">
      <strong>已选中 ID:</strong> {{ selectedItems }}
    </div>
  </div>
</template>

<script>
import { DxDropDownBox } from 'devextreme-vue/drop-down-box';
import { DxDataGrid, DxColumn, DxSelection } from 'devextreme-vue/data-grid';

export default {
  components: {
    DxDropDownBox,
    DxDataGrid,
    DxColumn,
    DxSelection,
  },
  data() {
    return {
      selectedItems: [],
      dataSource: [
        { id: 1, name: '苹果', color: '红色' },
        { id: 2, name: '香蕉', color: '黄色' },
        { id: 3, name: '橙子', color: '橙色' },
        { id: 4, name: '葡萄', color: '紫色' },
      ],
    };
  },
  methods: {
    onOpened() {
      const grid = this.$refs.dataGrid?.instance;
      if (grid) {
        grid.clearSelection(); // (可选,顺序会重排)清除当前选择,再全选 
        grid.selectAll();  // 注意:selectAll() 会触发 @selection-changed,所以 selectedItems 会由 onSelectionChanged 自动更新
      }
    },

    onSelectionChanged(e) {
      this.selectedItems = e.selectedRowKeys.map(item =>item.id);
    },
  },
};
</script>
相关推荐
Ziky学习记录8 小时前
从零到实战:React Router 学习与总结
前端·学习·react.js
wuhen_n9 小时前
JavaScript链表与双向链表实现:理解数组与链表的差异
前端·javascript
wuhen_n9 小时前
JavaScript数据结构深度解析:栈、队列与树的实现与应用
前端·javascript
我是一只puppy9 小时前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
颜酱9 小时前
从二叉树到衍生结构:5种高频树结构原理+解析
javascript·后端·算法
狗哥哥9 小时前
微前端路由设计方案 & 子应用管理保活
前端·架构
前端大卫10 小时前
Vue3 + Element-Plus 自定义虚拟表格滚动实现方案【附源码】
前端
却尘10 小时前
Next.js 请求最佳实践 - vercel 2026一月发布指南
前端·react.js·next.js
ccnocare10 小时前
浅浅看一下设计模式
前端
Lee川10 小时前
🎬 从标签到屏幕:揭秘现代网页构建与适配之道
前端·面试