下拉默认全选,选择展示对象的字段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>
相关推荐
螺丝钉tina8 分钟前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
PedroQue9928 分钟前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵35 分钟前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
开开心心就好1 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了1 小时前
Halcon学习一:骰子识别
前端·python·学习
大江东去浪淘尽千古风流人物1 小时前
【HexVIO】DSP卸载双目惯性VIO:Hexagon向量化前端与单帧融合调度深度解析
前端·状态模式·slam·dsp·vio·hexagon·移动端加速
এ慕ོ冬℘゜1 小时前
JS 事件循环、宏任务微任务:单线程底层原理 + 执行顺序
开发语言·javascript·ecmascript
其实防守也摸鱼1 小时前
Chrome 扩展安全攻防实录:从攻击面到防御实践
开发语言·前端·网络·chrome·安全·web安全·php
web打印社区2 小时前
Lodop排障总纲-常见报错一张表
开发语言·前端·javascript·chrome·websocket
李剑一2 小时前
为什么几乎所有的知名开源项目都是外国人写的?
前端·ai编程·deepseek