logo
为了能更好地了解您的商业使用需求,请参与 Ant Design Blazor 商业应用调查,一起建设商业应用社区,为企业系统研发赋能!

Table表格

展示行列数据。

何时使用

  • 当有大量结构化的数据需要展现时;
  • 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。

如何使用

指定表格的数据源 DataSource 为一个数组,可用 OnChange 事件传入的查询状态进行分页和筛选。

两个数据列类型:

  • PropertyColumn 继承自 Column,用 Property="c=>c.User.Name" 绑定列,支持级联访问。在 .NET6 以下使用需指定 TItem, TProp 的类型。
  • Column@bind-Field="context.UssrName" 绑定时不支持级联访问类的属性(例如:context.User.Name),但可以用 DataIndex="'User.Name'" 绑定。

其他列类型

  • ActionColumn 用于放置操作按钮,也可以作为不绑定类型的模板。
  • Selection 用来开启选择列,并提供选择框。

Examples

基础的查询与编辑案例。用到了自动生成列自动生成表单项

expand code expand code

简单的表格,最后一列是各种操作。

expand code expand code

在 .NET 5 以下版本建议使用 <Colum>@bind-FieldDataIndex 来方便地绑定数据。

局限: 使用 @bind-Feild 绑定接口类型的实体时,属性必须是引用类型,如 int 要改为 int?。使用 DataIndex 则无此问题。

expand code expand code

可以不使用 @bind-Field,而是通过设置数据类型 TData 和数据索引字符串 DataIndex 来指定要绑定的属性。列数据的类型与 TData 的定义一致。

当绑定的属性是值类型并且是Nullable时,TData 应设为Nullable类型。如:<Column TData="int?" DataIndex="prop1" /><Column TData="Nullable<int>" DataIndex="prop1" />

Column使用DataIndex时,Table的OnChange参数 QuerModel<TItem>.SortModel[].FieldName 等于 DataIndex

DataIndex支持的访问操作类型,详见成员路径助手

expand code expand code

可通过 TItem 类型自动生成列。

注意: 此功能正在迭代中,后续本版可能会存在不兼容的变更。

expand code expand code

可通过传入一个返回字典的委托,来给行或者单元格设置任意属性。如 onclickstyleclass 等。 适用于 OnRow OnHeaderRow OnCell OnHeaderCell

对于返回字典的要求,请参加官方文档【属性展开和任意参数】 一节。

expand code expand code

通过路由参数进行翻页

expand code expand code

第一列是联动的选择框。可以通过 RowSelection.Type 属性指定选择类型,默认为 checkbox

可为 SelectedRows 设置默认值来默认选中,默认是用对象引用来跟列数据做比对的,所以 要从 DataSource 中 选取对象。也可以利用 Table 上的 RowKey 属性来自定义比对值。

expand code expand code

对于使用 ADO.NET 查询数据库的场景,也可以将 DataTable 作为数据源。

expand code expand code

从动态的 Json 数据生成表格

expand code expand code

添加表格边框线,页头和页脚。

expand code expand code

对某一列数据进行筛选,使用列的 Filters 属性来指定需要筛选菜单的列,OnFilter 用于筛选当前数据,FilterMultiple 用于指定多选和单选。

对某一列数据进行排序,通过指定列的 Sortable 属性即可启动排序按钮,也可以设置 SorterCompare: (rowA, rowB) => int, rowA、rowB 为比较的两个行数据。

SortDirections: ['ascend' | 'descend']改变每列可用的排序方式,切换排序时按数组内容依次切换,设置在 table props 上时对所有列生效。你可以通过设置 ['ascend', 'descend', 'ascend'] 禁止排序恢复到默认状态。

使用 DefaultSortOrder 属性,设置列的默认排序顺序。

还可以在 OnChange 事件绑定的方法中,自定义筛选逻辑,可用方法 QueryModel.ExecuteQuery(data) 构建查询表达式。

expand code expand code

SorterCompare 传入比较函数以自定义排序。 返回值定义与 System.Collections.Generic.IComparer<T> 接口 一致。

expand code expand code

当不设置 Filters 时,在 Column 上使用 Filterable 属性也可以显示筛选器,默认会根据绑定的属性类型来创建内置的筛选器。

内置筛选器是根据绑定属性的类型来展示的,目前支持 数值型、枚举型、stringboolGuidDateTime

expand code expand code

当列类型不是内置筛选器支持的类型时,或者您想修改筛选器的比较操作,可以使用自定义筛选器 FieldFilterType

在本示例中,Color 列就是用自定义筛选器,可以按"亮度"筛选 (或按HUE值排序)。

自定义筛选器需要实现 IFieldFilterType,或者继承 BaseFieldFilterTypeDateFieldFilterType 来按需重写相关方法。

另外,还可以通过设置 FieldFilterTypeResolver 属性为整个表格组件配置自定义筛选器,或者可以通过在依赖注入服务中注册不同的 IFilterTypeResolver 实现来为整个应用程序中的表格组件设置自定义筛选器(DefaultFieldFilterTypeResolver 是默认实现。)。

expand code expand code

可以通过 FilterDropdown 自定义列筛选器模板,并在 OnChange 中把筛选条件拼接到已有的搜索中。

expand code expand code

在调用 ReloadData() 时可以将包含 “分页”、“排序”、“过滤器” 等状态的 QueryModel 传递给 Table 恢复状态。 另外也可以调用 ResetData() 重置 Table 状态。

expand code expand code

Column 支持 SorterMultiple 字段以配置多列排序优先级。通过 SorterCompare 配置排序逻辑,你可以通过不设置该函数只启动多列排序的交互形式。

expand code expand code

这个例子通过简单的 HttpClient 读取方式,演示了如何从服务端读取并展现数据,具有筛选、排序等功能以及页面 loading 效果。开发者可以自行接入其他数据处理方式。

另外,本例也展示了筛选排序功能如何交给服务端实现,列不需要指定具体的 OnFilterSorter 函数,而是在把筛选和排序的参数通过 OnChange 事件获取,并请求服务端来处理。

注意,此示例使用 模拟接口,展示数据可能不准确,请打开网络面板查看请求。

从0.9.0版本开始,可以设置 RemoteDataSourcetrue 来避免在数据总条数小于等于 PageSize 时调用客户端筛选排序分页逻辑。

expand code expand code

由于 QueryModel 已经提供了查询所需的所有信息(页码、排序、筛选),所以可以很好地支持 OData 等查询协议。

推荐使用 OData Client 方式结合 IQueryable<T> 的扩展方法 ExecuteTableQuery 进行流畅地查询。 但需要解决一个已知问题

  DefaultContainer dsc = new DefaultContainer(new Uri("https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/"));
  var _data = dsc.People.ExecuteTableQuery(queryModel).ToArray();
expand code expand code

两种紧凑型的列表,小型列表只用于对话框内。

expand code expand code

当表格内容较多不能一次性完全展示时。(本例中用于抽象类的不同实现类的展示)

expand code expand code

表头只支持列合并,使用 Column 里的 HeaderColSpan 进行设置,设值为 0 时,设置的表格不会渲染。

表格支持行/列合并,使用 Column 里的单元格属性 ColSpan 或者 RowSpan 设值为 0 时,设置的表格不会渲染。

expand code expand code

表格支持树形数据的展示,当数据中有 children 字段时会自动展示为树形表格,如果不需要或配置为其他字段可以用 childrenColumnName 进行配置。

可以通过设置 indentSize 以控制每一层的缩进宽度。

expand code expand code

在展示树形数据时,Table组件能够处理父子数据之间的循环引用。

当设置了 DefaultExpandAllRows 时,将按照 DefaultExpandMaxLevel 来限制展开的级数,避免因循环引用导致应用陷入死循环。

DefaultExpandMaxLevel 的默认值为 4。

expand code expand code

设置 Grouping 指定列属性值进行分组,也可以设置 GroupBy 委托来指定分组的值。还可以设置 GroupTitleTemplate 自定义分组标题。

注意:目前实现的是客户端分组,因此如果 DataSource 绑定的是 IQueryable<T>,请确保其已包含数据库分组的操作(分页、排序和筛选仍然生效)

expand code expand code

方便一页内展示大量数据。

需要指定 column 的 Width 属性,否则列头和内容可能不对齐。如果指定 Width 不生效或出现白色垂直空隙,请尝试建议留一列不设宽度以适应弹性布局,或者检查是否有超长连续字段破坏布局

expand code expand code

对于列数很多的数据,可以固定前后的列,横向滚动查看其它数据,需要和 ScrollX 配合使用。

若列头与内容不对齐或出现列重复,请指定固定列的宽度 Width。如果指定 Width 不生效或出现白色垂直空隙,请尝试建议留一列不设宽度以适应弹性布局,或者检查是否有超长连续字段破坏布局

建议指定 ScrollX 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 ScrollX

expand code expand code

适合同时展示有大量数据和数据列。

若列头与内容不对齐或出现列重复,请指定固定列的宽度 Width。如果指定 Width 不生效或出现白色垂直空隙,请尝试建议留一列不设宽度以适应弹性布局,或者检查是否有超长连续字段破坏布局

建议指定 ScrollX 为大于表格宽度的固定值或百分比。注意,且非固定列宽度之和不要超过 ScrollX

注意:如果右侧固定列出现错位,请设置 ScrollBarWidth 来固定滚动条宽度。

expand code expand code

设置 AutoHeight 可以让表格自动撑满高度,并固定头部。

expand code expand code

可以使用 HeaderTemplate 自定义表头模板。

本示例中,列定义 ColumnDefinitions 与头部定义 HeaderTemplate 分开了,ColumnDefinitions 中的定义只控制单元格的绑定。

expand code expand code

可以使用 RowTemplate 自定义每行数据的展示,本示例中每行数据分别由两行组成。

TableRow 是行组件,对应 <tr>, TableCell 是单元格组件,对应 <td>,

expand code expand code

可以使用 RowClassName 给特定的行设置 class。也可以用 ExpandedRowClassName 给特定的展开行设置 class。

注意:如果设置了固定列,则还需要为单元格指定样式。

expand code expand code

带单元格编辑功能的表格。

expand code expand code

带行编辑功能的表格。

expand code expand code

展示每行数据更详细的信息。

expand code expand code

使用 Resizable 属性启用可伸缩列。

expand code expand code

设置 Eolumn.Ellipsis 可以让单元格内容根据宽度自动省略。

列头缩略暂不支持和排序筛选一起使用。

expand code expand code

通过 SummaryRow 设置总结栏。使用 SummaryCell 同步 Column 的固定状态。

expand code expand code

可使用 Hidden 属性控制 Column 的显示。

expand code expand code

如果希望在小屏设备时( <960px )呈现列表模式,请设置 Responsive 属性。(v0.10.6+ 默认改为 false)

本示例需要调整浏览器宽度才会有效果。

expand code expand code

设置 EnableVirtualizationScrollY 启用虚拟化,在大数据量下提高性能(需要.NET 5或更高版本框架)。 启用 RemoteDataSource 即变为按需加载。

expand code expand code

可使用 Align 属设置列的对齐方式。

expand code expand code

表格的分页设置。

expand code expand code

使用PaginationTemplate可以实现自定义分页。

expand code expand code

Table API#

属性 描述 类型 默认值
RerenderStrategy 属性Render mode of table. See RerenderStrategy documentation for details. RerenderStrategy --
DataSource 属性要在表格中显示的数据 IEnumerable<TItem> --
ChildContent 属性表的内容。通常将包含 PropertyColumnActionColumn 元素。 RenderFragment<TItem> --
GroupTitleTemplate 属性分组块的标题模板 RenderFragment<GroupResult<TItem>> --
GroupFooterTemplate 属性分组块的页脚模板 RenderFragment<GroupResult<TItem>> --
RowTemplate 属性行模板 RenderFragment<RowData<TItem>> --
ColumnDefinitions 属性列定义的模板 RenderFragment<TItem> --
HeaderTemplate 属性页眉模板 RenderFragment<TItem> --
ExpandTemplate 属性用于展开行时显示内容的模板 RenderFragment<RowData<TItem>> --
DefaultExpandAllRows 属性初始,是否展开所有行 Boolean --
DefaultExpandMaxLevel 属性使用 DefaultExpandAllRows 时的最大扩展级别。当树记录有循环引用时,该属性用于避免死循环。默认值为 4。 Int32 --
RowExpandable 属性确定特定行是否可扩展的函数 Func<RowData<TItem>, Boolean> true for any rows
TreeChildren 属性儿童树项目 Func<TItem, IEnumerable<TItem>> Enumerable.Empty()
OnChange 属性分页、排序、过滤变化时执行的回调 EventCallback<QueryModel<TItem>> --
OnRow 属性设置行属性 Func<RowData<TItem>, Dictionary<String, Object>> --
OnHeaderRow 属性设置标题行属性 Func<Dictionary<String, Object>> --
Loading 属性表格是否正在加载 Boolean false
Title 属性表格标题文字 String --
TitleTemplate 属性表格标题内容 RenderFragment --
Footer 属性页脚文字 String --
FooterTemplate 属性页脚内容 RenderFragment --
Size 属性桌子尺寸 TableSize --
Locale 属性默认文案设置,目前包括排序、过滤、空数据文案 TableLocale --
Bordered 属性有无边框表格 Boolean false
ScrollX 属性设置水平滚动,也可以用来指定滚动区域的宽度,可以设置为像素值,百分比 String --
ScrollY 属性设置垂直滚动,也可以用来指定滚动区域的高度,可以设置为像素值 String --
AutoHeight 属性自动拉升表格高度至满屏显示 Boolean --
ScrollBarWidth 属性滚动条宽度 String 17px
IndentSize 属性显示树数据时,每一层缩进的宽度,单位px Int32 15
ExpandIconColumnIndex 属性自定义展开图标所在列的索引 Int32 0
RowClassName 属性确定特定行的类名的函数 Func<RowData<TItem>, String> --
ExpandedRowClassName 属性展开时确定特定行的类名的函数 Func<RowData<TItem>, String> --
OnExpand 属性行扩展时执行的回调 EventCallback<RowData<TItem>> --
SortDirections 属性支持的排序方式,涵盖Table中的sortDirections SortDirection[] --
TableLayout 属性table元素的table-layout属性,设置为fixed表示内容不会影响列的布局 String --
OnRowClick 属性单击一行时执行的回调 EventCallback<RowData<TItem>> --
RemoteDataSource 属性对于更复杂的用例,数据源是否是远程的 Boolean false
Responsive 属性当设置为 true 并且屏幕宽度小于 960px 时,表格将切换到小屏幕模式。在小屏模式下,目前只支持部分特性,在具有分组、展开列、树状数据、汇总单元格等特性的表格中会出现样式错误。 Boolean false
EmptyTemplate 属性自定义表为空时的空模板 RenderFragment --
RowKey 属性指定每行的标识符 Func<TItem, Object> --
Resizable 属性启用可调整大小的列 Boolean --
FieldFilterTypeResolver 属性设置字段筛选条件类型解析程序 IFieldFilterTypeResolver --
EnableVirtualization 属性Whether to enable virtualization feature or not, only works for .NET 5 and higher Boolean --
ColumnContext ColumnContext --
HidePagination 属性是否隐藏分页 Boolean --
PaginationPosition 属性分页的位置。有效值:topLeft、topCenter、topRight、bottomLeft、bottomCenter、bottomRight String bottomRight
PaginationTemplate 属性分页的自定义渲染 RenderFragment<ValueTuple<Int32, Int32, Int32, String, EventCallback<PaginationEventArgs>>> --
Total 属性总记录 Int32 --
TotalChanged 属性记录总数变化时执行的回调 EventCallback<Int32> --
PageIndex 属性Currently visible page. The first page is 1. If it is set to less than 1, the AntDesign.Table`1.OnChange callback won't be invoked. Int32 1
PageIndexChanged 属性 EventCallback<Int32> --
PageSize 属性每页记录数 Int32 10
PageSizeChanged 属性 EventCallback<Int32> --
OnPageIndexChange 属性当前可见页面改变时执行的回调 EventCallback<PaginationEventArgs> --
OnPageSizeChange 属性页面大小改变时执行的回调 EventCallback<PaginationEventArgs> --
SelectedRows 属性跨页面选择的行 IEnumerable<TItem> --
SelectedRowsChanged 属性选中行改变时执行的回调 EventCallback<IEnumerable<TItem>> --
OnSelectAll 属性单击“SelectAll”按钮时执行的回调。
这对于在表虚拟化或不仅在当前页面上显示时选择所有行非常有用。

选择所有行时参数为 true,取消选择所有行时为 false。

EventCallback<Boolean> --
Id 属性组件 HTML 的 ID String Uniquely Generated ID
Class 属性为 DOM 元素指定一个或多个类名。 String --
Style 属性指定 DOM 元素的内联样式。 String --
RefBack 属性一个 ForwardRef 实例。您可以使用 AntDesign.ForwardRef.Current 获取对内部 DOM 的引用。 ForwardRef --
方法签名 返回类型 描述
ReloadData() void 重新加载表的数据,转到第 1 页
ReloadData(Int32? pageIndex, Int32? pageSize) void 重新加载表的数据并以页面大小转到特定页面
ReloadData(QueryModel queryModel) void 从提供的查询模型中重新加载表的数据
ResetData() void 将表重置为其默认视图。转到第 1 页,默认页面大小并清除排序和过滤器。
GetQueryModel() QueryModel 获取表的查询模型
ExpandAll() void
CollapseAll() void
SelectAll() void 选择当前页面的所有行
UnselectAll() void 取消选择当前页面的所有行
SetSelection(ICollection<String> keys) void 如果可能,请改用 ,因为在启用虚拟化时,此方法无法正确地从不可见的行中选择项目。
SetSelection(IEnumerable<TItem> items) void 设置所有选定项
SetSelection(TItem item) void 选择一项

PropertyColumn API#

属性 描述 类型 默认值
Property 属性定义要在此列的单元格中显示的值。 Expression<Func<TItem, TProp>> --
FieldExpression 属性获取字段数据的表达式 Expression<Func<TProp>> --
FilterDropdown 属性此列代表的字段 RenderFragment --
Field 属性使用 @bind-Field 绑定到 TItem 的属性,建议使用 PropertyColumn 代替 TProp --
FieldChanged 属性仅用于 @bind-Field 并获取表达式,无其他用途 EventCallback<TProp> --
Title 属性列的标题。使用以下优先级顺序:AntDesign.ColumnBase.TitleAntDesign.Column`1.DisplayName,然后是 AntDesign.Column`1.FieldName String --
DataIndex 属性数据项中列数据的对应路径,支持通过数组查询嵌套路径 String --
Format 属性列数据序列化规则,如 DateTime.ToString("XXX") String --
Sortable 属性是否允许排序 Boolean false
SorterCompare 属性自定义排序的比较函数 Func<TProp, TProp, Int32> --
SorterMultiple 属性允许的同时排序数 Int32 --
ShowSorterTooltip 属性悬停在排序按钮上时是否显示工具提示 Boolean true
SortDirections 属性允许的排序方向 SortDirection[] --
DefaultSortOrder 属性默认排序方向 SortDirection --
OnCell 属性设置单元格属性 Func<CellData, Dictionary<String, Object>> --
OnHeaderCell 属性设置标题单元格属性 Func<Dictionary<String, Object>> --
Filterable 属性该列是否可过滤 Boolean false
Grouping 属性该列是否用于分组 Boolean --
GroupBy 属性指定列的分组函数 Func<TProp, Object> --
Filters 属性列的筛选选项 IEnumerable<TableFilter<TProp>> --
DefaultFilters 属性是否允许多个过滤器 IEnumerable<TableFilter> true
FilterMultiple 属性是否允许多个过滤器 Boolean --
FieldFilterType 属性列的筛选器类型 IFieldFilterType --
OnFilter 属性判断过滤时是否显示行的函数

参数1:过滤项的值

参数2:列的值

Expression<Func<TProp, TProp, Boolean>> --
Filtered 属性dataSource 是否被过滤。当为 true 时,过滤器图标将被激活。 Boolean --
CellRender 属性设置表中显示的列内容 RenderFragment<CellData<TProp>> --
DisplayName 列的显示名称 String --
FieldName 列的字段名称 String --
SortModel 列的排序模型 ITableSortModel --
FilterModel 柱的过滤模型 ITableFilterModel --
TitleTemplate 属性列标题的标题内容 RenderFragment --
Width 属性列宽 String --
HeaderStyle 属性标题单元格的样式 String --
RowSpan 属性行跨度 Int32 1
ColSpan 属性列跨度 Int32 1
HeaderColSpan 属性标题栏跨度 Int32 1
Fixed 属性修复一个列 String --
ChildContent 属性专栏内容 RenderFragment --
Ellipsis 属性设置为 true 时用省略号切断标题标题 Boolean false
Hidden 属性列是否隐藏 Boolean false
Align 属性列内容对齐 ColumnAlign --
ColIndex 该列在表中的索引 Int32 --
Id 属性组件 HTML 的 ID String Uniquely Generated ID
Class 属性为 DOM 元素指定一个或多个类名。 String --
Style 属性指定 DOM 元素的内联样式。 String --
RefBack 属性一个 ForwardRef 实例。您可以使用 AntDesign.ForwardRef.Current 获取对内部 DOM 的引用。 ForwardRef --

ActionColumn API#

属性 描述 类型 默认值
CellRender 属性一行的列内容。优先于 AntDesign.ColumnBase.ChildContent RenderFragment<CellData> --
Title 属性列标题的标题 String --
TitleTemplate 属性列标题的标题内容 RenderFragment --
Width 属性列宽 String --
HeaderStyle 属性标题单元格的样式 String --
RowSpan 属性行跨度 Int32 1
ColSpan 属性列跨度 Int32 1
HeaderColSpan 属性标题栏跨度 Int32 1
Fixed 属性修复一个列 String --
ChildContent 属性专栏内容 RenderFragment --
Ellipsis 属性设置为 true 时用省略号切断标题标题 Boolean false
Hidden 属性列是否隐藏 Boolean false
Align 属性列内容对齐 ColumnAlign --
ColIndex 该列在表中的索引 Int32 --
Id 属性组件 HTML 的 ID String Uniquely Generated ID
Class 属性为 DOM 元素指定一个或多个类名。 String --
Style 属性指定 DOM 元素的内联样式。 String --
RefBack 属性一个 ForwardRef 实例。您可以使用 AntDesign.ForwardRef.Current 获取对内部 DOM 的引用。 ForwardRef --

Selection API#

属性 描述 类型 默认值
Type 属性选择列、复选框或 Radio 的类型。 String checkbox
Disabled 属性选择列是否被禁用。 Boolean --
Key 属性现在没用了。请改用 Table 的 RowKey。

Obsolete 将在未来的版本中删除。
String --
CheckStrictly 属性精确检查表格行;父行和子行未关联 Boolean --
CellRender 属性自定义单元格的内容。 RenderFragment<CellData> --
RowSelections IList<ISelectionColumn> --
Selected Boolean --
Title 属性列标题的标题 String --
TitleTemplate 属性列标题的标题内容 RenderFragment --
Width 属性列宽 String --
HeaderStyle 属性标题单元格的样式 String --
RowSpan 属性行跨度 Int32 1
ColSpan 属性列跨度 Int32 1
HeaderColSpan 属性标题栏跨度 Int32 1
Fixed 属性修复一个列 String --
ChildContent 属性专栏内容 RenderFragment --
Ellipsis 属性设置为 true 时用省略号切断标题标题 Boolean false
Hidden 属性列是否隐藏 Boolean false
Align 属性列内容对齐 ColumnAlign --
ColIndex 该列在表中的索引 Int32 --
Id 属性组件 HTML 的 ID String Uniquely Generated ID
Class 属性为 DOM 元素指定一个或多个类名。 String --
Style 属性指定 DOM 元素的内联样式。 String --
RefBack 属性一个 ForwardRef 实例。您可以使用 AntDesign.ForwardRef.Current 获取对内部 DOM 的引用。 ForwardRef --

QueryModel API#

属性 描述 类型 默认值
PageIndex Int32 --
PageSize Int32 --
StartIndex Int32 --
OffsetRecords 请使用 StartIndex

Obsolete 将在未来的版本中删除。
Int32 --
SortModel IList<ITableSortModel> --
FilterModel IList<ITableFilterModel> --
方法签名 返回类型 描述
ExecuteQuery(IQueryable<TItem> query) IQueryable<TItem>
GetFilterExpression() Expression<Func<TItem, Boolean>> 获取 Entity Framework 等 ORM 的当前过滤器表达式。您可以通过对数据源执行表达式来获取筛选后的数据。
CurrentPagedRecords(IQueryable<TItem> query) IQueryable<TItem>
Clone() Object
Statistic统计数值 Tabs标签页
文档已更新,请点击 此处 更新。
A new version of this app is available. Click here to update.