Explorar o código

fix(table): `getSelectRows` support multi-page

getSelectRows支持跨页选择

close: #914
无木 %!s(int64=3) %!d(string=hai) anos
pai
achega
4b6025cb9a
Modificáronse 2 ficheiros con 9 adicións e 2 borrados
  1. 1 0
      CHANGELOG.zh_CN.md
  2. 8 2
      src/components/Table/src/hooks/useRowSelection.ts

+ 1 - 0
CHANGELOG.zh_CN.md

@@ -12,6 +12,7 @@
   - 修复可编辑单元格未能正确显示`0`值的问题
   - 修复 selection-change 事件在取消勾选时未能正确触发的问题
   - 修复浅色主题下的全屏状态背景颜色不正确的问题
+  - 修复`getSelectRows`不支持远程数据跨页选择时获取完整数据的问题
 - **Qrcode** 修复二维码组件在创建时未能及时绘制的问题
 - **BasicModal** 修复`helpMessage`属性不起作用的问题
 

+ 8 - 2
src/components/Table/src/hooks/useRowSelection.ts

@@ -67,13 +67,19 @@ export function useRowSelection(
 
   function setSelectedRowKeys(rowKeys: string[]) {
     selectedRowKeysRef.value = rowKeys;
-    selectedRowRef.value = findNodeAll(
-      toRaw(unref(tableData)),
+    const allSelectedRows = findNodeAll(
+      toRaw(unref(tableData)).concat(toRaw(unref(selectedRowRef))),
       (item) => rowKeys.includes(item[unref(getRowKey) as string]),
       {
         children: propsRef.value.childrenColumnName ?? 'children',
       }
     );
+    const trueSelectedRows: any[] = [];
+    rowKeys.forEach((key: string) => {
+      const found = allSelectedRows.find((item) => item[unref(getRowKey) as string] === key);
+      found && trueSelectedRows.push(found);
+    });
+    selectedRowRef.value = trueSelectedRows;
   }
 
   function setSelectedRows(rows: Recordable[]) {