---
order: 4
---
# 脚本数据集

脚本数据集通过编写前端脚本的方式构造或访问API数据，为页面获取数据提供了更强的开发能力。

脚本数据集提供了和系统内置数据集相同的能力，可以为下拉框或列表提供数据，缓存所有数据，提交数据等。

通过脚本数据集可以实现：

1. 访问第三方API获取数据。
2. 实现动态字段列表的数据集。如根据URL参数传递`resid`控制当前页面要查询的数据表。
3. 在SuperPage中获取页面中输入组件的校验信息，在一个浮动面板中展示。
4. 从脚本数据集装载了表单的数据，然后通过`提交表单`交互提交数据到脚本数据集，脚本数据集通过脚本将数据解析后发送给指定API。

实现脚本数据需要实现`IScriptDataSet`接口，并配置到`custom.ts`的`XX`中。`IScriptDataSet`提供了如下方法：

- [constructor](#constructor)，初始化脚本数据集的构造函数。
- [getFields](#getfields)，脚本数据集返回字段列表，如果是动态数据集则运行时根据参数返回不同的字段列表。
- [queryData](#querydata)，查询数据。
- [queryTotalRowCount](#querytotalrowcount)，可选，查询总行数。
- [queryItems](#queryitems)，可选，查询指定ID对应的数据条目或下级数据条目。
- [searchData](#searchdata)，可选，搜索数据条目。
- [queryFieldValues](#queryfieldvalues)，可选，查询指定ID对应的数据条目。
- [submitData](#submitdata)，可选，提交数据。
- [dispose](#dispose)，可选，页面销毁时，销毁数据集。

```typescript
TODO
```

### constructor

当数据集被初次创建时调用。

#### ScriptDatasetArgs

TODO

### getFields

返回数据集的字段列表。当数据集设置时勾选了动态数据集，则运行时根据参数可以动态返回字段列表。

```typescript
TODO
```

### queryData

当对数据集发起查询时调用此函数。

```typescript
TODO
```

### queryTotalRowCount

可选。当数据集只有总行数被引用时调用此函数。未实现时返回0。

如果同时有数据查询和总行数查询，调用`queryData`时会带上`queryTotalRowCount`属性一起查询总行数。

### queryItems

可选。

```typescript
TODO
```

### searchData

可选。

```typescript
TODO
```

### queryFieldValues

可选。

```typescript
TODO
```

### submitData

可选。

```typescript
TODO
```

### dispose

可选。

```typescript
TODO
```

## 示例

- TODO
- TODO
