## 相关背景

实现代码块向表单组件赋默认值

eg：表格视图上配置自定义按钮，点击按钮将当前条数据或者勾选的数据带到布局中，赋默认值

[图片附件未整合: ../../../../_assets/823686487529308160/001-b4a661dbb8.png]

实现方案：

通过sessionStorage设置给'EbdfSessionParamsCacheKey'

该方法可以给EB表单默认值接口传参

例如：

```javascript
//支持基线2024-1101
const paramsObj = {aaa:'111'}
window.sessionStorage.setItem('EbdfSessionParamsCacheKey',JSON.stringify(paramsObj))
```

[图片附件未整合: ../../../../_assets/823686487529308160/002-e87ebdd380.png]

## 实现方案

方案：

**1、前端实现 ，按钮的js代码块里面组装相应的表单需要的格式，放置缓存，eb布局加载时实现内部赋值 **  
**2、后端接口实现，按钮的js代码块里面组装相应的数据格式，放置缓存，eb布局加载时带给接口实现赋值**

**前端实现案例：**

```typescript
//data为表单数据，格式
    //a. 文本组件{content: '123'};
    //b. 选项组件{dataOptions: [{optionId: 123,content: '123'}]};
    //c. 多行文本组件{dataText: {content: '123'}}
    //d. 日期区间，[{content: '', formField: {id: start.id}},{content: '', formField: {id: end.id}}]
//数组，多个组件
const formValues = [
     {
      data: {//数据内容，按照表单的规则
          dataOptions:[
             {"optionId": "6475647249674459229","content": "选项2"},//单选框内容
          ],
      },
      fieldId:"4765647237333988085",//表单的字段id,如单选框 应使用格式b
      subFormId: "4765647209382587977",//明细表id，(无明细表则不传)
      rowId:'',//明细行id，需要，没有则新建行(无明细表则不传)
      dataIndex: 0,//明细行序号(新表单可能已放弃)(无明细表则不传)
    }
 ]

//写入给EB的前端初始化缓存
const formDefaultValues = JSON.stringify(formValues);
window.sessionStorage.setItem('ebdfpage_form_default_values', formDefaultValues);
```

2025.10及以上，赋默认值也可以使用以下方式

[https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/2adca95a-a8e9-4bf8-bec4-3c8e28781833](https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/2adca95a-a8e9-4bf8-bec4-3c8e28781833)
