iter(g94): 补充数据表联动导出配方
This commit is contained in:
@@ -73,6 +73,30 @@ list({ items: items(), bordered: true, emptyText: loading() ? '加载中…' : '
|
||||
- 空态文案随加载态切换;列表本身会在 `items` 为空时渲染 `empty`,不需要业务层再判断一次。
|
||||
- 需要骨架屏就换成 `skeleton`,加载完成再 `renderList` 成真实行。
|
||||
|
||||
## 配方 5:数据表 + 独立分页器 + 导出
|
||||
|
||||
```ts
|
||||
const page = signal(1);
|
||||
const table = dataTable({
|
||||
data: rows,
|
||||
columns: [
|
||||
{ key: 'name', header: '姓名', sortable: true, width: 160 },
|
||||
{ key: 'city', header: '城市', align: 'center', width: 'flex' },
|
||||
],
|
||||
page, // 受控页码:与外部 pagination 双向联动
|
||||
selectable: true,
|
||||
exportable: true, // 导出筛选 + 排序后的全量行(不是当前页)
|
||||
exportName: '用户列表.csv',
|
||||
});
|
||||
const pager = pagination({ page, pageSize: 5, total: rows.length, jumpable: true, pageSizes: [5, 10, 20] });
|
||||
```
|
||||
|
||||
要点:
|
||||
- 页码只保留一个来源:`dataTable` 与 `pagination` 共传同一个 `page` 信号,翻页由内核写回,桥接层会钳制越界值。
|
||||
- `exportable` 导出的是「筛选 + 排序后、未分页」的全量行,列序与表头一致、单元格走 `format`;想导出当前页请自行读 `getVisibleRows()`。
|
||||
- 列宽拖拽只对 `width` 给数字的列生效(`'flex'` 列交给浏览器自适应);双击手柄回到声明宽度。
|
||||
- 行选择一律按 rowKey 记账,筛选换掉可见行后已选仍在,批量操作前用已选计数确认。
|
||||
|
||||
## 通用约定
|
||||
|
||||
- 状态一律放信号(`signal` / `computed`),组件只读写信号,不持有业务数据副本。
|
||||
|
||||
Reference in New Issue
Block a user