Files
ant-design/components/table/index.html
T
2016-03-07 23:38:41 +08:00

3012 lines
105 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta name="description" content="一个 UI 设计语言"/>
<title>
Table 表格 - Ant Design
</title>
<link rel="icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="shortcut icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="stylesheet" href="../../dist/demo.css?20160114">
<script src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,es5-shim/4.1.14/es5-shim.min.js,es5-shim/4.1.14/es5-sham.min.js,html5shiv/3.7.2/html5shiv.min.js,media-match/2.0.2/media.match.min.js,jquery/1.11.3/jquery.min.js,bluebird/3.1.1/bluebird.min.js"></script>
<script>
(function() {
window.ANT_COMPONENTS = [];
window.InstantClickChangeFns = [];
ANT_COMPONENTS.push({
title: 'Pagination',
desc: '分页'
});
ANT_COMPONENTS.push({
title: 'Affix',
desc: '固钉'
});
ANT_COMPONENTS.push({
title: 'Badge',
desc: '徽标数'
});
ANT_COMPONENTS.push({
title: 'Breadcrumb',
desc: '面包屑'
});
ANT_COMPONENTS.push({
title: 'Button',
desc: '按钮'
});
ANT_COMPONENTS.push({
title: 'Calendar',
desc: '日历'
});
ANT_COMPONENTS.push({
title: 'Carousel',
desc: '走马灯'
});
ANT_COMPONENTS.push({
title: 'Cascader',
desc: '级联选择'
});
ANT_COMPONENTS.push({
title: 'Checkbox',
desc: '多选框'
});
ANT_COMPONENTS.push({
title: 'Collapse',
desc: '折叠面板'
});
ANT_COMPONENTS.push({
title: 'DatePicker',
desc: '日期选择框'
});
ANT_COMPONENTS.push({
title: 'Dropdown',
desc: '下拉菜单'
});
ANT_COMPONENTS.push({
title: 'Form',
desc: '表单'
});
ANT_COMPONENTS.push({
title: 'Icon',
desc: '图标'
});
ANT_COMPONENTS.push({
title: 'InputNumber',
desc: '数字输入框'
});
ANT_COMPONENTS.push({
title: 'Layout',
desc: '布局'
});
ANT_COMPONENTS.push({
title: 'Menu',
desc: '导航菜单'
});
ANT_COMPONENTS.push({
title: 'Message',
desc: '全局提示'
});
ANT_COMPONENTS.push({
title: 'Modal',
desc: '对话框'
});
ANT_COMPONENTS.push({
title: 'Notification',
desc: '通知提醒框'
});
ANT_COMPONENTS.push({
title: 'Alert',
desc: '警告提示'
});
ANT_COMPONENTS.push({
title: 'Popconfirm',
desc: '气泡确认框'
});
ANT_COMPONENTS.push({
title: 'Popover',
desc: '气泡卡片'
});
ANT_COMPONENTS.push({
title: 'Progress',
desc: '进度条'
});
ANT_COMPONENTS.push({
title: 'QueueAnim',
desc: '进出场动画'
});
ANT_COMPONENTS.push({
title: 'Radio',
desc: '单选框'
});
ANT_COMPONENTS.push({
title: 'Select',
desc: '选择器'
});
ANT_COMPONENTS.push({
title: 'Slider',
desc: '滑动输入条'
});
ANT_COMPONENTS.push({
title: 'Spin',
desc: '加载中'
});
ANT_COMPONENTS.push({
title: 'Steps',
desc: '步骤条'
});
ANT_COMPONENTS.push({
title: 'Switch',
desc: '开关'
});
ANT_COMPONENTS.push({
title: 'Table',
desc: '表格'
});
ANT_COMPONENTS.push({
title: 'Tabs',
desc: '标签页'
});
ANT_COMPONENTS.push({
title: 'Tag',
desc: '标签'
});
ANT_COMPONENTS.push({
title: 'TimePicker',
desc: '时间选择框'
});
ANT_COMPONENTS.push({
title: 'Timeline',
desc: '时间轴'
});
ANT_COMPONENTS.push({
title: 'Tooltip',
desc: '文字提示'
});
ANT_COMPONENTS.push({
title: 'Transfer',
desc: '穿梭框'
});
ANT_COMPONENTS.push({
title: 'Tree',
desc: '树形控件'
});
ANT_COMPONENTS.push({
title: 'TreeSelect',
desc: '树选择'
});
ANT_COMPONENTS.push({
title: 'Upload',
desc: '文件上传'
});
// fix ie location origin
// http://stackoverflow.com/questions/22564167/window-location-origin-gives-wrong-value-when-using-ie
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//"
+ window.location.hostname
+ (window.location.port ? ':' + window.location.port : '');
}
var i = location.pathname.split('/').lastIndexOf('ant-design');
if (i > 0) {
window.rootUrl = location.origin + location.pathname.split('/').slice(0, 2+1).join('/');
} else {
window.rootUrl = location.origin;
}
})();
</script>
<script>
window.antdVersion = {
latest: '0.12.8'
};
</script>
<script src="../../dist/demo.js?20160114"></script>
</head>
<body >
<header id="header" class="clearfix">
<a class="logo" href="../..">
<img width="60" src="https://t.alipayobjects.com/images/rmsweb/T1B9hfXcdvXXXXXXXX.svg">
Ant Design
</a>
<div class="search">
<div id="autoComplete"></div>
</div>
<nav class="nav" tabindex="-1">
<span class="bar"></span>
<ul>
<li class="">
<a href="../..">首页</a>
</li>
<li class="">
<a href="../../docs/practice/cases">实践</a>
</li>
<li class="">
<a href="../../docs/pattern/navigation">模式</a>
</li>
<li class="current">
<a href="../../docs/react/introduce">组件</a>
</li>
<li class="">
<a href="../../docs/spec/introduce">语言</a>
</li>
<li class="">
<a href="../../docs/resource/download">资源</a>
</li>
</ul>
</nav>
<div class="nav-phone-icon"></div>
</header>
<div class="main-wrapper">
<aside class="aside-container">
<ul>
<li class="">
<a href="../../docs/react/introduce"
class="">
Ant Design of React
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="../../docs/react/getting-started"
class="">
快速上手
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="../../docs/react/install"
class="">
安装
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="../../docs/react/upgrade-notes"
class="">
升级指南
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="../../changelog"
class="">
更新日志
<span class="chinese"></span>
</a>
</li>
<li open="open">
<h4>Components</h4>
<ul class="">
<li class="type-divider">基本</li>
<li class="">
<a href="../button/"
class="">
Button
<span class="chinese">按钮</span>
</a>
</li>
<li class="">
<a href="../icon/"
class="">
Icon
<span class="chinese">图标</span>
</a>
</li>
<li class="">
<a href="../layout/"
class="">
Layout
<span class="chinese">布局</span>
</a>
</li>
<li class="type-divider">表单</li>
<li class="">
<a href="../cascader/"
class="">
Cascader
<span class="chinese">级联选择</span>
</a>
</li>
<li class="">
<a href="../checkbox/"
class="">
Checkbox
<span class="chinese">多选框</span>
</a>
</li>
<li class="">
<a href="../date-picker/"
class="">
DatePicker
<span class="chinese">日期选择框</span>
</a>
</li>
<li class="">
<a href="../form/"
class="">
Form
<span class="chinese">表单</span>
</a>
</li>
<li class="">
<a href="../input-number/"
class="">
InputNumber
<span class="chinese">数字输入框</span>
</a>
</li>
<li class="">
<a href="../radio/"
class="">
Radio
<span class="chinese">单选框</span>
</a>
</li>
<li class="">
<a href="../select/"
class="">
Select
<span class="chinese">选择器</span>
</a>
</li>
<li class="">
<a href="../slider/"
class="">
Slider
<span class="chinese">滑动输入条</span>
</a>
</li>
<li class="">
<a href="../switch/"
class="">
Switch
<span class="chinese">开关</span>
</a>
</li>
<li class="">
<a href="../time-picker/"
class="">
TimePicker
<span class="chinese">时间选择框</span>
</a>
</li>
<li class="">
<a href="../transfer/"
class="">
Transfer
<span class="chinese">穿梭框</span>
</a>
</li>
<li class="">
<a href="../tree-select/"
class="">
TreeSelect
<span class="chinese">树选择</span>
</a>
</li>
<li class="">
<a href="../upload/"
class="">
Upload
<span class="chinese">文件上传</span>
</a>
</li>
<li class="type-divider">展示</li>
<li class="">
<a href="../alert/"
class="">
Alert
<span class="chinese">警告提示</span>
</a>
</li>
<li class="">
<a href="../badge/"
class="">
Badge
<span class="chinese">徽标数</span>
</a>
</li>
<li class="">
<a href="../calendar/"
class="">
Calendar
<span class="chinese">日历</span>
</a>
</li>
<li class="">
<a href="../carousel/"
class="">
Carousel
<span class="chinese">走马灯</span>
</a>
</li>
<li class="">
<a href="../collapse/"
class="">
Collapse
<span class="chinese">折叠面板</span>
</a>
</li>
<li class="">
<a href="../dropdown/"
class="">
Dropdown
<span class="chinese">下拉菜单</span>
</a>
</li>
<li class="">
<a href="../message/"
class=""data-no-instant>
Message
<span class="chinese">全局提示</span>
</a>
</li>
<li class="">
<a href="../modal/"
class="">
Modal
<span class="chinese">对话框</span>
</a>
</li>
<li class="">
<a href="../notification/"
class=""data-no-instant>
Notification
<span class="chinese">通知提醒框</span>
</a>
</li>
<li class="">
<a href="../popconfirm/"
class="">
Popconfirm
<span class="chinese">气泡确认框</span>
</a>
</li>
<li class="">
<a href="../popover/"
class="">
Popover
<span class="chinese">气泡卡片</span>
</a>
</li>
<li class="">
<a href="../progress/"
class="">
Progress
<span class="chinese">进度条</span>
</a>
</li>
<li class="current">
<a href="./"
class="">
Table
<span class="chinese">表格</span>
</a>
</li>
<li class="">
<a href="../tag/"
class="">
Tag
<span class="chinese">标签</span>
</a>
</li>
<li class="">
<a href="../timeline/"
class="">
Timeline
<span class="chinese">时间轴</span>
</a>
</li>
<li class="">
<a href="../tooltip/"
class="">
Tooltip
<span class="chinese">文字提示</span>
</a>
</li>
<li class="">
<a href="../tree/"
class="">
Tree
<span class="chinese">树形控件</span>
</a>
</li>
<li class="type-divider">导航</li>
<li class="">
<a href="../breadcrumb/"
class="">
Breadcrumb
<span class="chinese">面包屑</span>
</a>
</li>
<li class="">
<a href="../menu/"
class="">
Menu
<span class="chinese">导航菜单</span>
</a>
</li>
<li class="">
<a href="../pagination/"
class="">
Pagination
<span class="chinese">分页</span>
</a>
</li>
<li class="">
<a href="../steps/"
class="">
Steps
<span class="chinese">步骤条</span>
</a>
</li>
<li class="">
<a href="../tabs/"
class="">
Tabs
<span class="chinese">标签页</span>
</a>
</li>
<li class="type-divider">其他</li>
<li class="">
<a href="../affix/"
class="">
Affix
<span class="chinese">固钉</span>
</a>
</li>
<li class="">
<a href="../queue-anim/"
class="">
QueueAnim
<span class="chinese">进出场动画</span>
</a>
</li>
<li class="">
<a href="../spin/"
class="">
Spin
<span class="chinese">加载中</span>
</a>
</li>
</ul>
</li>
</ul>
</aside>
<section class="main-container">
<article class="markdown">
<h1>
Table 表格
</h1>
<p>展示行列数据。</p>
<h2 id="何时使用">何时使用<a href="#何时使用" class="anchor">#</a> </h2><ul>
<li>当有大量结构化的数据需要展现时;</li>
<li>当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。</li>
</ul>
<h2 id="如何使用">如何使用<a href="#如何使用" class="anchor">#</a> </h2><p>指定表格的数据源 <code>dataSource</code> 为一个数组。</p>
<div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">const</span> dataSource = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
key: <span class="hljs-string">'name'</span>,
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
key: <span class="hljs-string">'age'</span>,
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>,
key: <span class="hljs-string">'address'</span>,
}];
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{dataSource}</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> /&gt;</span></span></code></pre></div><blockquote>
<p>注:<code>dataSource</code><code>0.11.0</code> 版本后不再支持远程模式。</p>
</blockquote>
<h2 id="api">API<a href="#api" class="anchor">#</a> </h2><h3 id="table">Table<a href="#table" class="anchor">#</a> </h3><table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
<th>可选值</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td>rowSelection</td>
<td>列表项是否可选择</td>
<td>Object</td>
<td><a href="#rowSelection">配置项</a></td>
<td>null</td>
</tr>
<tr>
<td>pagination</td>
<td>分页器</td>
<td>Object</td>
<td>配置项参考 <a href="/components/pagination">pagination</a>,设为 false 时不显示分页</td>
<td></td>
</tr>
<tr>
<td>size</td>
<td>正常或迷你类型</td>
<td>String</td>
<td><code>default</code> or <code>small</code></td>
<td>default</td>
</tr>
<tr>
<td>dataSource</td>
<td>数据数组</td>
<td>Array</td>
<td></td>
<td></td>
</tr>
<tr>
<td>columns</td>
<td>表格列的配置描述,具体项见下表</td>
<td>Array</td>
<td></td>
<td></td>
</tr>
<tr>
<td>rowKey</td>
<td>表格行 key 的取值</td>
<td>Function(record, index):string</td>
<td></td>
<td>record.key</td>
</tr>
<tr>
<td>expandedRowRender</td>
<td>额外的展开行</td>
<td>Function</td>
<td></td>
<td>-</td>
</tr>
<tr>
<td>defaultExpandedRowKeys</td>
<td>默认展开的行</td>
<td>Array</td>
<td></td>
<td>-</td>
</tr>
<tr>
<td>onChange</td>
<td>分页、排序、筛选变化时触发</td>
<td>Function(pagination, filters, sorter)</td>
<td></td>
<td></td>
</tr>
<tr>
<td>loading</td>
<td>页面是否加载中</td>
<td>Boolean</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>locale</td>
<td>默认文案设置,目前包括排序、过滤、空数据文案</td>
<td>Object</td>
<td></td>
<td><code>{ filterConfirm: &#39;确定&#39;, filterReset: &#39;重置&#39;, emptyText: &#39;暂无数据&#39; }</code> <a href="https://github.com/ant-design/ant-design/issues/575#issuecomment-159169511">默认值</a></td>
</tr>
<tr>
<td>indentSize</td>
<td>展示树形数据时,每层缩进的宽度,以 px 为单位</td>
<td>Number</td>
<td></td>
<td>15</td>
</tr>
<tr>
<td>onRowClick</td>
<td>处理行点击事件</td>
<td>Function(record, index)</td>
<td></td>
<td></td>
</tr>
<tr>
<td>useFixedHeader</td>
<td>是否固定表头</td>
<td>Boolean</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>bordered</td>
<td>是否展示外边框和列边框</td>
<td>Boolean</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td>showHeader</td>
<td>是否显示表头</td>
<td>Boolean</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>footer</td>
<td>表格底部自定义渲染函数</td>
<td>Function(currentPageData)</td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="column">Column<a href="#column" class="anchor">#</a> </h3><p>列描述数据对象,是 columns 中的一项。</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
<th>可选值</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td>title</td>
<td>列头显示文字</td>
<td>String or React.Element</td>
<td></td>
<td></td>
</tr>
<tr>
<td>key</td>
<td>React 需要的 key,建议设置</td>
<td>String</td>
<td></td>
<td></td>
</tr>
<tr>
<td>dataIndex</td>
<td>列数据在数据项中对应的 key</td>
<td>String</td>
<td></td>
<td></td>
</tr>
<tr>
<td>render</td>
<td>生成复杂数据的渲染函数,参数分别为当前列的值,当前列数据,列索引,@return里面可以设置表格<a href="#demo-colspan-rowspan">行/列合并</a></td>
<td>Function(text, record, index) {}</td>
<td></td>
<td></td>
</tr>
<tr>
<td>filters</td>
<td>表头的筛选菜单项</td>
<td>Array</td>
<td></td>
<td></td>
</tr>
<tr>
<td>onFilter</td>
<td>本地模式下,确定筛选的运行函数</td>
<td>Function</td>
<td></td>
<td></td>
</tr>
<tr>
<td>filterMultiple</td>
<td>是否多选</td>
<td>Boolean</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td>sorter</td>
<td>排序函数,本地排序使用一个函数,需要服务端排序可设为 true</td>
<td>Function or Boolean</td>
<td></td>
<td></td>
</tr>
<tr>
<td>colSpan</td>
<td>表头列合并,设置为 0 时,不渲染</td>
<td>Number</td>
<td></td>
<td></td>
</tr>
<tr>
<td>width</td>
<td>列宽度</td>
<td>String or Number</td>
<td></td>
<td></td>
</tr>
<tr>
<td>className</td>
<td>列的 className</td>
<td>String</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="rowselection">rowSelection<a href="#rowselection" class="anchor">#</a> </h3><p>选择功能的配置。</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td>type</td>
<td>多选/单选,<code>checkbox</code> or <code>radio</code></td>
<td>String</td>
<td><code>checkbox</code></td>
</tr>
<tr>
<td>selectedRowKeys</td>
<td>指定选中项的 key 数组,需要和 onChange 进行配合</td>
<td>Array</td>
<td>[]</td>
</tr>
<tr>
<td>onChange</td>
<td>选中项发生变化的时的回调</td>
<td>Function(selectedRowKeys, selectedRows)</td>
<td>-</td>
</tr>
<tr>
<td>getCheckboxProps</td>
<td>选择框的默认属性配置</td>
<td>Function(record)</td>
<td>-</td>
</tr>
<tr>
<td>onSelect</td>
<td>用户手动选择/取消选择某列的回调</td>
<td>Function(record, selected, selectedRows)</td>
<td>-</td>
</tr>
<tr>
<td>onSelectAll</td>
<td>用户手动选择/取消选择所有列的回调</td>
<td>Function(selected, selectedRows, changeRows)</td>
<td>-</td>
</tr>
</tbody>
</table>
<h2 id="注意">注意<a href="#注意" class="anchor">#</a> </h2><p>按照 React 的<a href="http://facebook.github.io/react/docs/multiple-components.html#dynamic-children">规范</a>,所有的组件数组必须绑定 key。在 Table 中,<code>dataSource</code><code>columns</code> 里的数据值都需要指定 <code>key</code> 值。对于 <code>dataSource</code> 默认将每列数据的 <code>key</code> 属性作为唯一的标识。</p>
<p>如果你的数据没有这个属性,务必使用 <code>rowKey</code> 来指定数据列的主键。若没有指定,控制台会出现以下的提示,表格组件也会出现各类奇怪的错误。</p>
<p><img src="https://os.alipayobjects.com/rmsportal/luLdLvhPOiRpyss.png" alt=""></p>
<div class="highlight"><pre><code class="javascript"><span class="hljs-comment">// 比如你的数据主键是 uid</span>
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">rowKey</span>=<span class="hljs-value">{record</span> =&gt;</span> record.uid} /&gt;;</span></code></pre></div>
</article>
<h2 class="component-demos">
代码演示
<i class="anticon anticon-appstore icon-all" title="展开全部代码"></i>
</h2>
<div class="code-boxes">
<div class="code-boxes-col-1-1"><div class="code-box" id="demo-basic">
<div class="code-box-demo">
<div id="components-table-demo-basic"></div>
<script>mountNode = document.getElementById('components-table-demo-basic');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
key: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: '#' },
text
);
}
}, {
title: '年龄',
dataIndex: 'age',
key: 'age'
}, {
title: '住址',
dataIndex: 'address',
key: 'address'
}, {
title: '操作',
key: 'operation',
render: function render(text, record) {
return React.createElement(
'span',
null,
React.createElement(
'a',
{ href: '#' },
'操作一',
record.name
),
React.createElement('span', { className: 'ant-divider' }),
React.createElement(
'a',
{ href: '#' },
'操作二'
),
React.createElement('span', { className: 'ant-divider' }),
React.createElement(
'a',
{ href: '#', className: 'ant-dropdown-link' },
'更多 ',
React.createElement(_antd.Icon, { type: 'down' })
)
);
}
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table, Icon } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
key: <span class="hljs-string">'name'</span>,
render(text) {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
key: <span class="hljs-string">'age'</span>,
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>,
key: <span class="hljs-string">'address'</span>,
}, {
title: <span class="hljs-string">'操作'</span>,
key: <span class="hljs-string">'operation'</span>,
render(text, record) {
<span class="hljs-keyword">return</span> (
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">span</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>操作一{record.name}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">span</span> <span class="hljs-attribute">className</span>=<span class="hljs-value">"ant-divider"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>操作二<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">span</span> <span class="hljs-attribute">className</span>=<span class="hljs-value">"ant-divider"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span> <span class="hljs-attribute">className</span>=<span class="hljs-value">"ant-dropdown-link"</span>&gt;</span>
更多 <span class="hljs-tag">&lt;<span class="hljs-title">Icon</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"down"</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span>
)</span>;
}
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-basic">基本用法</a>
</div>
<p>简单的表格,最后一列是各种操作。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-row-selection">
<div class="code-box-demo">
<div id="components-table-demo-row-selection"></div>
<script>mountNode = document.getElementById('components-table-demo-row-selection');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: '#' },
text
);
}
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
// 通过 rowSelection 对象表明需要行选择
var rowSelection = {
onChange: function onChange(selectedRowKeys, selectedRows) {
console.log('selectedRowKeys: ' + selectedRowKeys, 'selectedRows: ', selectedRows);
},
onSelect: function onSelect(record, selected, selectedRows) {
console.log(record, selected, selectedRows);
},
onSelectAll: function onSelectAll(selected, selectedRows, changeRows) {
console.log(selected, selectedRows, changeRows);
}
};
ReactDOM.render(React.createElement(_antd.Table, { rowSelection: rowSelection, columns: columns, dataSource: data }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
render(text) {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
<span class="hljs-comment">// 通过 rowSelection 对象表明需要行选择</span>
<span class="hljs-keyword">const</span> rowSelection = {
onChange(selectedRowKeys, selectedRows) {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`selectedRowKeys: <span class="hljs-subst">${selectedRowKeys}</span>`</span>, <span class="hljs-string">'selectedRows: '</span>, selectedRows);
},
onSelect(record, selected, selectedRows) {
<span class="hljs-built_in">console</span>.log(record, selected, selectedRows);
},
onSelectAll(selected, selectedRows, changeRows) {
<span class="hljs-built_in">console</span>.log(selected, selectedRows, changeRows);
}
};
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">rowSelection</span>=<span class="hljs-value">{rowSelection}</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-row-selection">可选择</a>
</div>
<p>第一列是联动的选择框。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-row-selection-and-operation">
<div class="code-box-demo">
<div id="components-table-demo-row-selection-and-operation"></div>
<script>mountNode = document.getElementById('components-table-demo-row-selection-and-operation');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name'
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [];
for (var i = 0; i < 46; i++) {
data.push({
key: i,
name: '李大嘴' + i,
age: 32,
address: '西湖区湖底公园' + i + '号'
});
}
var App = React.createClass({
displayName: 'App',
getInitialState: function getInitialState() {
return {
selectedRowKeys: [],
loading: false
};
},
start: function start() {
var _this = this;
this.setState({ loading: true });
// 模拟 ajax 请求,完成后清空
setTimeout(function () {
_this.setState({
selectedRowKeys: [],
loading: false
});
}, 1000);
},
onSelectChange: function onSelectChange(selectedRowKeys) {
console.log('selectedRowKeys changed: ', selectedRowKeys);
this.setState({ selectedRowKeys: selectedRowKeys });
},
render: function render() {
var _state = this.state;
var loading = _state.loading;
var selectedRowKeys = _state.selectedRowKeys;
var rowSelection = {
selectedRowKeys: selectedRowKeys,
onChange: this.onSelectChange
};
var hasSelected = selectedRowKeys.length > 0;
return React.createElement(
'div',
null,
React.createElement(
'div',
{ style: { marginBottom: 16 } },
React.createElement(
_antd.Button,
{ type: 'primary', onClick: this.start,
disabled: !hasSelected, loading: loading },
'操作'
),
React.createElement(
'span',
{ style: { marginLeft: 8 } },
hasSelected ? '选择了 ' + selectedRowKeys.length + ' 个对象' : ''
)
),
React.createElement(_antd.Table, { rowSelection: rowSelection, columns: columns, dataSource: data })
);
}
});
ReactDOM.render(React.createElement(App, null), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table, Button } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>,
}];
<span class="hljs-keyword">const</span> data = [];
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">46</span>; i++) {
data.push({
key: i,
name: <span class="hljs-string">`李大嘴<span class="hljs-subst">${i}</span>`</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">`西湖区湖底公园<span class="hljs-subst">${i}</span>号`</span>
});
}
<span class="hljs-keyword">const</span> App = React.createClass({
getInitialState() {
<span class="hljs-keyword">return</span> {
selectedRowKeys: [],
loading: <span class="hljs-literal">false</span>,
};
},
start() {
<span class="hljs-keyword">this</span>.setState({ loading: <span class="hljs-literal">true</span> });
<span class="hljs-comment">// 模拟 ajax 请求,完成后清空</span>
setTimeout(() =&gt; {
<span class="hljs-keyword">this</span>.setState({
selectedRowKeys: [],
loading: <span class="hljs-literal">false</span>,
});
}, <span class="hljs-number">1000</span>);
},
onSelectChange(selectedRowKeys) {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'selectedRowKeys changed: '</span>, selectedRowKeys);
<span class="hljs-keyword">this</span>.setState({ selectedRowKeys });
},
render() {
<span class="hljs-keyword">const</span> { loading, selectedRowKeys } = <span class="hljs-keyword">this</span>.state;
<span class="hljs-keyword">const</span> rowSelection = {
selectedRowKeys,
onChange: <span class="hljs-keyword">this</span>.onSelectChange,
};
<span class="hljs-keyword">const</span> hasSelected = selectedRowKeys.length &gt; <span class="hljs-number">0</span>;
<span class="hljs-keyword">return</span> (
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">div</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">{{</span> <span class="hljs-attribute">marginBottom:</span> <span class="hljs-attribute">16</span> }}&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">Button</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"primary"</span> <span class="hljs-attribute">onClick</span>=<span class="hljs-value">{this.start}</span>
<span class="hljs-attribute">disabled</span>=<span class="hljs-value">{!hasSelected}</span> <span class="hljs-attribute">loading</span>=<span class="hljs-value">{loading}</span>&gt;</span>操作<span class="hljs-tag">&lt;/<span class="hljs-title">Button</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">span</span> <span class="hljs-attribute">style</span>=<span class="hljs-value">{{</span> <span class="hljs-attribute">marginLeft:</span> <span class="hljs-attribute">8</span> }}&gt;</span>{hasSelected ? `选择了 ${selectedRowKeys.length} 个对象` : ''}<span class="hljs-tag">&lt;/<span class="hljs-title">span</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">rowSelection</span>=<span class="hljs-value">{rowSelection}</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>
)</span>;
}
});
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">App</span> /&gt;</span>, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-row-selection-and-operation">选择和操作</a>
</div>
<p>选择后进行操作,完成后清空选择,通过 <code>rowSelection.selectedRowKeys</code> 来控制选中项。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-row-selection-props">
<div class="code-box-demo">
<div id="components-table-demo-row-selection-props"></div>
<script>mountNode = document.getElementById('components-table-demo-row-selection-props');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: '#' },
text
);
}
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
// 通过 rowSelection 对象表明需要行选择
var rowSelection = {
getCheckboxProps: function getCheckboxProps(record) {
return {
defaultChecked: record.name === '李大嘴', // 配置默认勾选的列
disabled: record.name === '胡彦祖' // 配置无法勾选的列
};
},
onChange: function onChange(selectedRowKeys) {
console.log('selectedRowKeys changed: ' + selectedRowKeys);
},
onSelect: function onSelect(record, selected, selectedRows) {
console.log(record, selected, selectedRows);
},
onSelectAll: function onSelectAll(selected, selectedRows) {
console.log(selected, selectedRows);
}
};
ReactDOM.render(React.createElement(_antd.Table, { rowSelection: rowSelection, columns: columns, dataSource: data }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
render(text) {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
<span class="hljs-comment">// 通过 rowSelection 对象表明需要行选择</span>
<span class="hljs-keyword">const</span> rowSelection = {
getCheckboxProps(record) {
<span class="hljs-keyword">return</span> {
defaultChecked: record.name === <span class="hljs-string">'李大嘴'</span>, <span class="hljs-comment">// 配置默认勾选的列</span>
disabled: record.name === <span class="hljs-string">'胡彦祖'</span> <span class="hljs-comment">// 配置无法勾选的列</span>
};
},
onChange(selectedRowKeys) {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">`selectedRowKeys changed: <span class="hljs-subst">${selectedRowKeys}</span>`</span>);
},
onSelect(record, selected, selectedRows) {
<span class="hljs-built_in">console</span>.log(record, selected, selectedRows);
},
onSelectAll(selected, selectedRows) {
<span class="hljs-built_in">console</span>.log(selected, selectedRows);
},
};
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">rowSelection</span>=<span class="hljs-value">{rowSelection}</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-row-selection-props">选择框属性</a>
</div>
<p>配置选择框的默认属性。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-paging">
<div class="code-box-demo">
<div id="components-table-demo-paging"></div>
<script>mountNode = document.getElementById('components-table-demo-paging');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: '#' },
text
);
}
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [];
for (var i = 0; i < 46; i++) {
data.push({
key: i,
name: '李大嘴' + i,
age: 32,
address: '西湖区湖底公园' + i + '号'
});
}
var pagination = {
total: data.length,
current: 1,
showSizeChanger: true,
onShowSizeChange: function onShowSizeChange(current, pageSize) {
console.log('Current: ', current, '; PageSize: ', pageSize);
},
onChange: function onChange(current) {
console.log('Current: ', current);
}
};
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, pagination: pagination }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
render(text) {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [];
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">46</span>; i++) {
data.push({
key: i,
name: <span class="hljs-string">`李大嘴<span class="hljs-subst">${i}</span>`</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">`西湖区湖底公园<span class="hljs-subst">${i}</span>号`</span>
});
}
<span class="hljs-keyword">const</span> pagination = {
total: data.length,
current: <span class="hljs-number">1</span>,
showSizeChanger: <span class="hljs-literal">true</span>,
onShowSizeChange(current, pageSize) {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Current: '</span>, current, <span class="hljs-string">'; PageSize: '</span>, pageSize);
},
onChange(current) {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Current: '</span>, current);
}
};
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">pagination</span>=<span class="hljs-value">{pagination}</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-paging">分页</a>
</div>
<p>数据项较多时显示分页。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-head">
<div class="code-box-demo">
<div id="components-table-demo-head"></div>
<script>mountNode = document.getElementById('components-table-demo-head');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
filters: [{
text: '姓李的',
value: '李'
}, {
text: '姓胡的',
value: '胡'
}, {
text: '子菜单',
value: '子菜单',
children: [{
text: '姓陈的',
value: '陈'
}, {
text: '姓王的',
value: '王'
}]
}],
// 指定确定筛选的条件函数
// 这里是名字中第一个字是 value
onFilter: function onFilter(value, record) {
return record.name.indexOf(value) === 0;
},
sorter: function sorter(a, b) {
return a.name.length - b.name.length;
}
}, {
title: '年龄',
dataIndex: 'age',
sorter: function sorter(a, b) {
return a.age - b.age;
}
}, {
title: '地址',
dataIndex: 'address',
filters: [{
text: '南湖',
value: '南湖'
}, {
text: '西湖',
value: '西湖'
}],
filterMultiple: false,
onFilter: function onFilter(value, record) {
return record.address.indexOf(value) === 0;
},
sorter: function sorter(a, b) {
return a.address.length - b.address.length;
}
}];
var data = [{
key: '1',
name: '胡斌',
age: 32,
address: '南湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园12号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '南湖区湖底公园123号'
}, {
key: '4',
name: '李秀莲大嘴哥',
age: 32,
address: '西湖区湖底公园123号'
}];
function onChange(pagination, filters, sorter) {
// 点击分页、筛选、排序时触发
console.log('各类参数是', pagination, filters, sorter);
}
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, onChange: onChange }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
filters: [{
text: <span class="hljs-string">'姓李的'</span>,
value: <span class="hljs-string">'李'</span>,
}, {
text: <span class="hljs-string">'姓胡的'</span>,
value: <span class="hljs-string">'胡'</span>,
}, {
text: <span class="hljs-string">'子菜单'</span>,
value: <span class="hljs-string">'子菜单'</span>,
children: [{
text: <span class="hljs-string">'姓陈的'</span>,
value: <span class="hljs-string">'陈'</span>,
}, {
text: <span class="hljs-string">'姓王的'</span>,
value: <span class="hljs-string">'王'</span>,
}]
}],
<span class="hljs-comment">// 指定确定筛选的条件函数</span>
<span class="hljs-comment">// 这里是名字中第一个字是 value</span>
onFilter(value, record) {
<span class="hljs-keyword">return</span> record.name.indexOf(value) === <span class="hljs-number">0</span>;
},
sorter(a, b) {
<span class="hljs-keyword">return</span> a.name.length - b.name.length;
}
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
sorter(a, b) {
<span class="hljs-keyword">return</span> a.age - b.age;
}
}, {
title: <span class="hljs-string">'地址'</span>,
dataIndex: <span class="hljs-string">'address'</span>,
filters: [{
text: <span class="hljs-string">'南湖'</span>,
value: <span class="hljs-string">'南湖'</span>
}, {
text: <span class="hljs-string">'西湖'</span>,
value: <span class="hljs-string">'西湖'</span>
}],
filterMultiple: <span class="hljs-literal">false</span>,
onFilter(value, record) {
<span class="hljs-keyword">return</span> record.address.indexOf(value) === <span class="hljs-number">0</span>;
},
sorter(a, b) {
<span class="hljs-keyword">return</span> a.address.length - b.address.length;
}
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'南湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园12号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'南湖区湖底公园123号'</span>
}, {
key: <span class="hljs-string">'4'</span>,
name: <span class="hljs-string">'李秀莲大嘴哥'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园123号'</span>
}];
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">onChange</span>(<span class="hljs-params">pagination, filters, sorter</span>) </span>{
<span class="hljs-comment">// 点击分页、筛选、排序时触发</span>
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'各类参数是'</span>, pagination, filters, sorter);
}
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">onChange</span>=<span class="hljs-value">{onChange}</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-head">筛选和排序</a>
</div>
<p>对某一列数据进行筛选,使用列的 <code>filter</code> 属性来指定需要筛选菜单的列,<code>onFilter</code> 用于筛选当前数据,<code>filterMultiple</code> 用于指定多选和单选。</p>
<p>对某一列数据进行排序,通过指定列的 <code>sorter</code> 函数即可启动排序按钮。<code>sorter: function(a, b) { ... }</code> a、b 为比较的两个列数据。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-ajax">
<div class="code-box-demo">
<div id="components-table-demo-ajax"></div>
<script>mountNode = document.getElementById('components-table-demo-ajax');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var _reqwest = require('reqwest');
var _reqwest2 = _interopRequireDefault(_reqwest);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var columns = [{
title: '姓名',
dataIndex: 'name',
filters: [{
text: '姓李的',
value: '李'
}, {
text: '姓胡的',
value: '胡'
}]
}, {
title: '年龄',
dataIndex: 'age',
sorter: true
}, {
title: '住址',
dataIndex: 'address'
}];
var Test = React.createClass({
displayName: 'Test',
getInitialState: function getInitialState() {
return {
data: [],
pagination: {},
loading: false
};
},
handleTableChange: function handleTableChange(pagination, filters, sorter) {
var pager = this.state.pagination;
pager.current = pagination.current;
this.setState({
pagination: pager
});
var params = {
pageSize: pagination.pageSize,
currentPage: pagination.current,
sortField: sorter.field,
sortOrder: sorter.order
};
for (var key in filters) {
if (filters.hasOwnProperty(key)) {
params[key] = filters[key];
}
}
this.fetch(params);
},
fetch: function fetch() {
var _this = this;
var params = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
console.log('请求参数:', params);
this.setState({ loading: true });
(0, _reqwest2.default)({
url: 'demo/data.json',
method: 'get',
data: params,
type: 'json',
success: function success(result) {
var pagination = _this.state.pagination;
pagination.total = result.totalCount;
_this.setState({
loading: false,
data: result.data,
pagination: pagination
});
}
});
},
componentDidMount: function componentDidMount() {
this.fetch();
},
render: function render() {
return React.createElement(_antd.Table, { columns: columns,
dataSource: this.state.data,
pagination: this.state.pagination,
loading: this.state.loading,
onChange: this.handleTableChange });
}
});
ReactDOM.render(React.createElement(Test, null), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">import</span> reqwest <span class="hljs-keyword">from</span> <span class="hljs-string">'reqwest'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
filters: [{
text: <span class="hljs-string">'姓李的'</span>,
value: <span class="hljs-string">'李'</span>
}, {
text: <span class="hljs-string">'姓胡的'</span>,
value: <span class="hljs-string">'胡'</span>
}]
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
sorter: <span class="hljs-literal">true</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> Test = React.createClass({
getInitialState() {
<span class="hljs-keyword">return</span> {
data: [],
pagination: {},
loading: <span class="hljs-literal">false</span>,
};
},
handleTableChange(pagination, filters, sorter) {
<span class="hljs-keyword">const</span> pager = <span class="hljs-keyword">this</span>.state.pagination;
pager.current = pagination.current;
<span class="hljs-keyword">this</span>.setState({
pagination: pager
});
<span class="hljs-keyword">const</span> params = {
pageSize: pagination.pageSize,
currentPage: pagination.current,
sortField: sorter.field,
sortOrder: sorter.order
};
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> key <span class="hljs-keyword">in</span> filters) {
<span class="hljs-keyword">if</span> (filters.hasOwnProperty(key)) {
params[key] = filters[key];
}
}
<span class="hljs-keyword">this</span>.fetch(params);
},
fetch(params = {}) {
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'请求参数:'</span>, params);
<span class="hljs-keyword">this</span>.setState({ loading: <span class="hljs-literal">true</span> });
reqwest({
url: <span class="hljs-string">'demo/data.json'</span>,
method: <span class="hljs-string">'get'</span>,
data: params,
type: <span class="hljs-string">'json'</span>,
success: (result) =&gt; {
<span class="hljs-keyword">const</span> pagination = <span class="hljs-keyword">this</span>.state.pagination;
pagination.total = result.totalCount;
<span class="hljs-keyword">this</span>.setState({
loading: <span class="hljs-literal">false</span>,
data: result.data,
pagination,
});
}
});
},
componentDidMount() {
<span class="hljs-keyword">this</span>.fetch();
},
render() {
<span class="hljs-keyword">return</span> (
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span>
<span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{this.state.data}</span>
<span class="hljs-attribute">pagination</span>=<span class="hljs-value">{this.state.pagination}</span>
<span class="hljs-attribute">loading</span>=<span class="hljs-value">{this.state.loading}</span>
<span class="hljs-attribute">onChange</span>=<span class="hljs-value">{this.handleTableChange}</span> /&gt;</span>
)</span>;
}
});
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Test</span> /&gt;</span>, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-ajax">远程加载数据</a>
</div>
<p><code>0.11.0</code> 以后,<code>dataSource</code> 远程模式被移除,用户可以自行实现数据读取方式。</p>
<p>这个例子通过简单的 ajax 读取方式,演示了如何从服务端读取并展现数据,具有筛选、排序等功能以及页面 loading 效果。开发者可以自行接入其他数据处理方式。</p>
<p>另外,本例也展示了筛选排序功能如何交给服务端实现,列不需要指定具体的 <code>onFilter</code><code>sorter</code> 函数,而是在把筛选和排序的参数发到服务端来处理。</p>
<p><strong>注意,此示例是静态数据模拟,展示数据不会变化,请打开网络面板查看请求。</strong></p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-nopagination">
<div class="code-box-demo">
<div id="components-table-demo-nopagination"></div>
<script>mountNode = document.getElementById('components-table-demo-nopagination');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name'
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, pagination: false }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">pagination</span>=<span class="hljs-value">{false}</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-nopagination">不显示分页</a>
</div>
<p>传入 pagination 为 false 即可。此时表格将完整显示 dataSource 内的数据,不进行任何分页。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-size">
<div class="code-box-demo">
<div id="components-table-demo-size"></div>
<script>mountNode = document.getElementById('components-table-demo-size');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name'
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
ReactDOM.render(React.createElement(
'div',
null,
React.createElement(
'h4',
null,
'中号表格(紧凑型)'
),
React.createElement(_antd.Table, { columns: columns, dataSource: data, size: 'middle' }),
React.createElement(
'h4',
null,
'小号表格'
),
React.createElement(_antd.Table, { columns: columns, dataSource: data, size: 'small' })
), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">h4</span>&gt;</span>中号表格(紧凑型)<span class="hljs-tag">&lt;/<span class="hljs-title">h4</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">size</span>=<span class="hljs-value">"middle"</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">h4</span>&gt;</span>小号表格<span class="hljs-tag">&lt;/<span class="hljs-title">h4</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">size</span>=<span class="hljs-value">"small"</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>, mountNode);</span></code></pre></div><style>#components-table-demo-size h4 { margin-bottom: 16px; }</style>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-size">紧凑型</a>
</div>
<p>紧凑型的列表, 中型列表用于需要数据紧凑展示的情况,小型列表只用于对话框内。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-bordered">
<div class="code-box-demo">
<div id="components-table-demo-bordered"></div>
<script>mountNode = document.getElementById('components-table-demo-bordered');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: '#' },
text
);
}
}, {
title: '资产',
className: 'column-money',
dataIndex: 'money'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
key: '1',
name: '胡彦斌',
money: '¥300,000.00',
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
money: '¥1,256,000.00',
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
money: '¥120,000.00',
address: '西湖区湖底公园1号'
}];
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, bordered: true }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
render(text) {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="hljs-string">'资产'</span>,
className: <span class="hljs-string">'column-money'</span>,
dataIndex: <span class="hljs-string">'money'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
money: <span class="hljs-string">'¥300,000.00'</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
money: <span class="hljs-string">'¥1,256,000.00'</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
money: <span class="hljs-string">'¥120,000.00'</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">bordered</span> /&gt;</span>
, mountNode);</span></code></pre></div><style type="text/css">.column-money {
text-align: right;
}</style><div class="highlight"><pre><code class="css"><span class="hljs-class">.column-money</span> <span class="hljs-rules">{
<span class="hljs-rule"><span class="hljs-attribute">text-align</span>:<span class="hljs-value"> right</span></span>;
}</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-bordered">边框</a>
</div>
<p>添加表格边框线,<code>bordered</code></p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-expand">
<div class="code-box-demo">
<div id="components-table-demo-expand"></div>
<script>mountNode = document.getElementById('components-table-demo-expand');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{ title: '姓名', dataIndex: 'name', key: 'name' }, { title: '年龄', dataIndex: 'age', key: 'age' }, { title: '住址', dataIndex: 'address', key: 'address' }, { title: '操作', dataIndex: '', key: 'x', render: function render() {
return React.createElement(
'a',
{ href: '#' },
'删除'
);
} }];
var data = [{ key: 1, name: '胡彦斌', age: 32, address: '西湖区湖底公园1号', description: '我是胡彦斌,今年32岁,住在西湖区湖底公园1号。' }, { key: 2, name: '吴彦祖', age: 42, address: '西湖区湖底公园2号', description: '我是吴彦祖,今年42岁,住在西湖区湖底公园2号。' }, { key: 3, name: '李大嘴', age: 32, address: '西湖区湖底公园3号', description: '我是李大嘴,今年32岁,住在西湖区湖底公园3号。' }];
ReactDOM.render(React.createElement(_antd.Table, { columns: columns,
expandedRowRender: function expandedRowRender(record) {
return React.createElement(
'p',
null,
record.description
);
},
dataSource: data,
className: 'table' }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [
{ title: <span class="hljs-string">'姓名'</span>, dataIndex: <span class="hljs-string">'name'</span>, key: <span class="hljs-string">'name'</span> },
{ title: <span class="hljs-string">'年龄'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'age'</span> },
{ title: <span class="hljs-string">'住址'</span>, dataIndex: <span class="hljs-string">'address'</span>, key: <span class="hljs-string">'address'</span> },
{ title: <span class="hljs-string">'操作'</span>, dataIndex: <span class="hljs-string">''</span>, key: <span class="hljs-string">'x'</span>, render: () =&gt; <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>删除<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span> }
];
const data = [
{ key: 1, name: '胡彦斌', age: 32, address: '西湖区湖底公园1号', description: '我是胡彦斌,今年32岁,住在西湖区湖底公园1号。' },
{ key: 2, name: '吴彦祖', age: 42, address: '西湖区湖底公园2号', description: '我是吴彦祖,今年42岁,住在西湖区湖底公园2号。' },
{ key: 3, name: '李大嘴', age: 32, address: '西湖区湖底公园3号', description: '我是李大嘴,今年32岁,住在西湖区湖底公园3号。' }
];
ReactDOM.render(
<span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span>
<span class="hljs-attribute">expandedRowRender</span>=<span class="hljs-value">{record</span> =&gt;</span> <span class="hljs-tag">&lt;<span class="hljs-title">p</span>&gt;</span>{record.description}<span class="hljs-tag">&lt;/<span class="hljs-title">p</span>&gt;</span>}
dataSource={data}
className="table" /&gt;
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-expand">可展开</a>
</div>
<p>当表格内容较多不能一次性完全展示时。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-colspan-rowspan">
<div class="code-box-demo">
<div id="components-table-demo-colspan-rowspan"></div>
<script>mountNode = document.getElementById('components-table-demo-colspan-rowspan');</script>
<script>(function(){'use strict';
var _antd = require('antd');
// 事例表中第四行合并了五列,除了第一列设置 colSpan = 5 外
// 其他列的第四行 colSpan = 0 (被合并掉,不会渲染)
var renderContent = function renderContent(value, row, index) {
var obj = {
children: value,
props: {}
};
if (index === 4) {
obj.props.colSpan = 0;
}
return obj;
};
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text, row, index) {
if (index < 4) {
return React.createElement(
'a',
{ href: '#' },
text
);
}
return {
children: React.createElement(
'a',
{ href: '#' },
text
),
props: {
colSpan: 5
}
};
}
}, {
title: '年龄',
dataIndex: 'age',
render: renderContent
}, {
title: '家庭电话',
colSpan: 2,
dataIndex: 'tel',
render: function render(value, row, index) {
var obj = {
children: value,
props: {}
};
// 第三列的第三行行合并
if (index === 2) {
obj.props.rowSpan = 2;
}
// 第三列的第四行被合并没了,设置 rowSpan = 0 直接不用渲染
if (index === 3) {
obj.props.rowSpan = 0;
}
if (index === 4) {
obj.props.colSpan = 0;
}
return obj;
}
}, {
title: '手机号',
colSpan: 0,
dataIndex: 'phone',
render: renderContent
}, {
title: '住址',
dataIndex: 'address',
render: renderContent
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
tel: '0571-22098909',
phone: 18889898989,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
tel: '0571-22098333',
phone: 18889898888,
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
tel: '0575-22098909',
phone: 18900010002,
address: '西湖区湖底公园1号'
}, {
key: '4',
name: '李夫人',
age: 18,
tel: '0575-22098909',
phone: 18900010002,
address: '西湖区湖底公园1号'
}, {
key: '5',
name: '习大大',
age: 18,
tel: '0575-22098909',
phone: 18900010002,
address: '西湖区湖底公园1号'
}];
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, bordered: true }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-comment">// 事例表中第四行合并了五列,除了第一列设置 colSpan = 5 外</span>
<span class="hljs-comment">// 其他列的第四行 colSpan = 0 (被合并掉,不会渲染)</span>
<span class="hljs-keyword">const</span> renderContent = <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">value, row, index</span>) </span>{
<span class="hljs-keyword">let</span> obj = {
children: value,
props: {}
};
<span class="hljs-keyword">if</span> (index === <span class="hljs-number">4</span>) {
obj.props.colSpan = <span class="hljs-number">0</span>;
}
<span class="hljs-keyword">return</span> obj;
};
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
render(text, row, index) {
<span class="hljs-keyword">if</span> (index &lt; <span class="hljs-number">4</span>) {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
<span class="hljs-keyword">return</span> {
children: <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>{text}<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>,
props: {
colSpan: 5
}
};
}
}, {
title: '年龄',
dataIndex: 'age',
render: renderContent
}, {
title: '家庭电话',
colSpan: 2,
dataIndex: 'tel',
render(value, row, index) {
let obj = {
children: value,
props: {}
};
// 第三列的第三行行合并
if (index === 2) {
obj.props.rowSpan = 2;
}
// 第三列的第四行被合并没了,设置 rowSpan = 0 直接不用渲染
if (index === 3) {
obj.props.rowSpan = 0;
}
if (index === 4) {
obj.props.colSpan = 0;
}
return obj;
}
}, {
title: '手机号',
colSpan: 0,
dataIndex: 'phone',
render: renderContent
}, {
title: '住址',
dataIndex: 'address',
render: renderContent
}];
const data = [{
key: '1',
name: '胡彦斌',
age: 32,
tel: '0571-22098909',
phone: 18889898989,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
tel: '0571-22098333',
phone: 18889898888,
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
tel: '0575-22098909',
phone: 18900010002,
address: '西湖区湖底公园1号'
}, {
key: '4',
name: '李夫人',
age: 18,
tel: '0575-22098909',
phone: 18900010002,
address: '西湖区湖底公园1号'
}, {
key: '5',
name: '习大大',
age: 18,
tel: '0575-22098909',
phone: 18900010002,
address: '西湖区湖底公园1号'
}];
ReactDOM.render(<span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">bordered</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-colspan-rowspan">表格行/列合并</a>
</div>
<p>表头只支持列合并,使用 column 里的 colSpan 进行设置。</p>
<p>表格支持行/列合并,使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时,设置的表格不会渲染。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-loading">
<div class="code-box-demo">
<div id="components-table-demo-loading"></div>
<script>mountNode = document.getElementById('components-table-demo-loading');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name'
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
key: '3',
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
var App = React.createClass({
displayName: 'App',
getInitialState: function getInitialState() {
return {
loading: false
};
},
toggleLoading: function toggleLoading() {
this.setState({
loading: !this.state.loading
});
},
render: function render() {
return React.createElement(
'div',
null,
React.createElement(_antd.Table, { columns: columns, dataSource: data, loading: this.state.loading }),
React.createElement(
_antd.Button,
{ type: 'primary', onClick: this.toggleLoading },
'切换 loading 状态'
)
);
}
});
ReactDOM.render(React.createElement(App, null), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table, Button } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}, {
key: <span class="hljs-string">'3'</span>,
name: <span class="hljs-string">'李大嘴'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'西湖区湖底公园1号'</span>
}];
<span class="hljs-keyword">const</span> App = React.createClass({
getInitialState() {
<span class="hljs-keyword">return</span> {
loading: <span class="hljs-literal">false</span>
};
},
toggleLoading() {
<span class="hljs-keyword">this</span>.setState({
loading: !<span class="hljs-keyword">this</span>.state.loading
});
},
render() {
<span class="hljs-keyword">return</span> (
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">div</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">loading</span>=<span class="hljs-value">{this.state.loading}</span> /&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-title">Button</span> <span class="hljs-attribute">type</span>=<span class="hljs-value">"primary"</span> <span class="hljs-attribute">onClick</span>=<span class="hljs-value">{this.toggleLoading}</span>&gt;</span>切换 loading 状态<span class="hljs-tag">&lt;/<span class="hljs-title">Button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">div</span>&gt;</span>
)</span>;
}
});
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">App</span> /&gt;</span>, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-loading">加载中的表格</a>
</div>
<p>用属性 <code>loading</code> 控制表格加载中状态。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-fixed-header">
<div class="code-box-demo">
<div id="components-table-demo-fixed-header"></div>
<script>mountNode = document.getElementById('components-table-demo-fixed-header');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
width: 150
}, {
title: '年龄',
dataIndex: 'age',
width: 150
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [];
for (var i = 0; i < 100; i++) {
data.push({
key: i,
name: '李大嘴' + i,
age: 32,
address: '西湖区湖底公园' + i + '号'
});
}
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, pagination: { pageSize: 50 }, useFixedHeader: true }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
width: <span class="hljs-number">150</span>,
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
width: <span class="hljs-number">150</span>,
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>,
}];
<span class="hljs-keyword">const</span> data = [];
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">100</span>; i++) {
data.push({
key: i,
name: <span class="hljs-string">`李大嘴<span class="hljs-subst">${i}</span>`</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">`西湖区湖底公园<span class="hljs-subst">${i}</span>号`</span>
});
}
ReactDOM.render(
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">pagination</span>=<span class="hljs-value">{{</span> <span class="hljs-attribute">pageSize:</span> <span class="hljs-attribute">50</span> }} <span class="hljs-attribute">useFixedHeader</span> /&gt;</span>
, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-fixed-header">固定表头</a>
</div>
<p>方便一页内展示大量数据。</p>
<p>需要指定 column 的 <code>width</code> 属性,否则列头和内容可能不对齐。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-paging-columns">
<div class="code-box-demo">
<div id="components-table-demo-paging-columns"></div>
<script>mountNode = document.getElementById('components-table-demo-paging-columns');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{ title: '姓名', dataIndex: 'name', key: 'name' }, { title: '年龄', dataIndex: 'age', key: 'age' }, { title: '列1', dataIndex: 'age', key: '1' }, { title: '列2', dataIndex: 'age', key: '2' }, { title: '列3', dataIndex: 'age', key: '3' }, { title: '列4', dataIndex: 'age', key: '4' }, { title: '列5', dataIndex: 'age', key: '5' }, { title: '列6', dataIndex: 'age', key: '6' }, { title: '列7', dataIndex: 'age', key: '7' }, { title: '列8', dataIndex: 'age', key: '8' }, {
title: '操作',
key: 'operation',
render: function render() {
return React.createElement(
'a',
{ href: '#' },
'操作'
);
}
}];
var data = [{
key: '1',
name: '胡彦斌',
age: 32
}, {
key: '2',
name: '胡彦祖',
age: 42
}];
var App = React.createClass({
displayName: 'App',
render: function render() {
return React.createElement(_antd.Table, { columns: columns, dataSource: data, columnsPageRange: [2, 9], columnsPageSize: 4 });
}
});
ReactDOM.render(React.createElement(App, null), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [
{ title: <span class="hljs-string">'姓名'</span>, dataIndex: <span class="hljs-string">'name'</span>, key: <span class="hljs-string">'name'</span> },
{ title: <span class="hljs-string">'年龄'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'age'</span> },
{ title: <span class="hljs-string">'列1'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'1'</span> },
{ title: <span class="hljs-string">'列2'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'2'</span> },
{ title: <span class="hljs-string">'列3'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'3'</span> },
{ title: <span class="hljs-string">'列4'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'4'</span> },
{ title: <span class="hljs-string">'列5'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'5'</span> },
{ title: <span class="hljs-string">'列6'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'6'</span> },
{ title: <span class="hljs-string">'列7'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'7'</span> },
{ title: <span class="hljs-string">'列8'</span>, dataIndex: <span class="hljs-string">'age'</span>, key: <span class="hljs-string">'8'</span> },
{
title: <span class="hljs-string">'操作'</span>,
key: <span class="hljs-string">'operation'</span>,
render() {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">a</span> <span class="hljs-attribute">href</span>=<span class="hljs-value">"#"</span>&gt;</span>操作<span class="hljs-tag">&lt;/<span class="hljs-title">a</span>&gt;</span>;</span>
}
},
];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-string">'1'</span>,
name: <span class="hljs-string">'胡彦斌'</span>,
age: <span class="hljs-number">32</span>,
}, {
key: <span class="hljs-string">'2'</span>,
name: <span class="hljs-string">'胡彦祖'</span>,
age: <span class="hljs-number">42</span>,
}];
<span class="hljs-keyword">const</span> App = React.createClass({
render() {
<span class="hljs-keyword">return</span> <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">columnsPageRange</span>=<span class="hljs-value">{[2,</span> <span class="hljs-attribute">9</span>]} <span class="hljs-attribute">columnsPageSize</span>=<span class="hljs-value">{4}</span> /&gt;</span>;</span>
}
});
ReactDOM.render(<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">App</span> /&gt;</span>, mountNode);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-paging-columns">横向滚屏表格</a>
</div>
<p>对于列数很多的数据,可以进行横向的分页,通过切换符切换当前展现的列。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div><div class="code-box" id="demo-expand-children">
<div class="code-box-demo">
<div id="components-table-demo-expand-children"></div>
<script>mountNode = document.getElementById('components-table-demo-expand-children');</script>
<script>(function(){'use strict';
var _antd = require('antd');
var columns = [{
title: '姓名',
dataIndex: 'name',
key: 'name',
width: '40%'
}, {
title: '年龄',
dataIndex: 'age',
key: 'age',
width: '30%'
}, {
title: '住址',
dataIndex: 'address',
key: 'address',
width: '30%'
}];
var data = [{
key: 1,
name: 'a',
age: 32,
address: '我是a',
children: [{
key: 11,
name: 'aa',
age: 33,
address: '我是aa'
}, {
key: 12,
name: 'ab',
age: 33,
address: '我是ab',
children: [{
key: 121,
name: 'aba',
age: 33,
address: '我是aba'
}]
}, {
key: 13,
name: 'ac',
age: 33,
address: '我是ac',
children: [{
key: 131,
name: 'aca',
age: 33,
address: '我是aca',
children: [{
key: 1311,
name: 'acaa',
age: 33,
address: '我是acaa'
}, {
key: 1312,
name: 'acab',
age: 33,
address: '我是acab'
}]
}]
}]
}, {
key: 2,
name: 'b',
age: 32,
address: '我是b'
}];
ReactDOM.render(React.createElement(_antd.Table, { columns: columns, dataSource: data, indentSize: 20 }), mountNode);})()</script><div class="highlight"><pre><code class="javascript"><span class="hljs-keyword">import</span> { Table } <span class="hljs-keyword">from</span> <span class="hljs-string">'antd'</span>;
<span class="hljs-keyword">const</span> columns = [{
title: <span class="hljs-string">'姓名'</span>,
dataIndex: <span class="hljs-string">'name'</span>,
key: <span class="hljs-string">'name'</span>,
width: <span class="hljs-string">'40%'</span>,
}, {
title: <span class="hljs-string">'年龄'</span>,
dataIndex: <span class="hljs-string">'age'</span>,
key: <span class="hljs-string">'age'</span>,
width: <span class="hljs-string">'30%'</span>,
}, {
title: <span class="hljs-string">'住址'</span>,
dataIndex: <span class="hljs-string">'address'</span>,
key: <span class="hljs-string">'address'</span>,
width: <span class="hljs-string">'30%'</span>,
}];
<span class="hljs-keyword">const</span> data = [{
key: <span class="hljs-number">1</span>,
name: <span class="hljs-string">'a'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'我是a'</span>,
children: [{
key: <span class="hljs-number">11</span>,
name: <span class="hljs-string">'aa'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是aa'</span>,
}, {
key: <span class="hljs-number">12</span>,
name: <span class="hljs-string">'ab'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是ab'</span>,
children: [{
key: <span class="hljs-number">121</span>,
name: <span class="hljs-string">'aba'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是aba'</span>,
}],
}, {
key: <span class="hljs-number">13</span>,
name: <span class="hljs-string">'ac'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是ac'</span>,
children: [{
key: <span class="hljs-number">131</span>,
name: <span class="hljs-string">'aca'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是aca'</span>,
children: [{
key: <span class="hljs-number">1311</span>,
name: <span class="hljs-string">'acaa'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是acaa'</span>,
}, {
key: <span class="hljs-number">1312</span>,
name: <span class="hljs-string">'acab'</span>,
age: <span class="hljs-number">33</span>,
address: <span class="hljs-string">'我是acab'</span>,
}],
}],
}],
}, {
key: <span class="hljs-number">2</span>,
name: <span class="hljs-string">'b'</span>,
age: <span class="hljs-number">32</span>,
address: <span class="hljs-string">'我是b'</span>,
}];
ReactDOM.render(
<span class="xml"><span class="hljs-tag">&lt;<span class="hljs-title">Table</span> <span class="hljs-attribute">columns</span>=<span class="hljs-value">{columns}</span> <span class="hljs-attribute">dataSource</span>=<span class="hljs-value">{data}</span> <span class="hljs-attribute">indentSize</span>=<span class="hljs-value">{20}</span> /&gt;</span>,
mountNode
);</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">
<a href="#demo-expand-children">树形数据展示</a>
</div>
<p>表格支持树形数据的展示,可以通过设置 <code>indentSize</code> 以控制每一层的缩进宽度。</p>
<span class="collapse anticon anticon-circle-o-right" unselectable="none"></span>
</div>
</div>
</div>
</div>
<ul class="toc demos-anchor">
<li>
<a title="基本用法" href="#demo-basic">
<span>基本用法</span>
</a>
</li>
<li>
<a title="可选择" href="#demo-row-selection">
<span>可选择</span>
</a>
</li>
<li>
<a title="选择和操作" href="#demo-row-selection-and-operation">
<span>选择和操作</span>
</a>
</li>
<li>
<a title="选择框属性" href="#demo-row-selection-props">
<span>选择框属性</span>
</a>
</li>
<li>
<a title="分页" href="#demo-paging">
<span>分页</span>
</a>
</li>
<li>
<a title="筛选和排序" href="#demo-head">
<span>筛选和排序</span>
</a>
</li>
<li>
<a title="远程加载数据" href="#demo-ajax">
<span>远程加载数据</span>
</a>
</li>
<li>
<a title="不显示分页" href="#demo-nopagination">
<span>不显示分页</span>
</a>
</li>
<li>
<a title="紧凑型" href="#demo-size">
<span>紧凑型</span>
</a>
</li>
<li>
<a title="边框" href="#demo-bordered">
<span>边框</span>
</a>
</li>
<li>
<a title="可展开" href="#demo-expand">
<span>可展开</span>
</a>
</li>
<li>
<a title="表格行/列合并" href="#demo-colspan-rowspan">
<span>表格行/列合并</span>
</a>
</li>
<li>
<a title="加载中的表格" href="#demo-loading">
<span>加载中的表格</span>
</a>
</li>
<li>
<a title="固定表头" href="#demo-fixed-header">
<span>固定表头</span>
</a>
</li>
<li>
<a title="横向滚屏表格" href="#demo-paging-columns">
<span>横向滚屏表格</span>
</a>
</li>
<li>
<a title="树形数据展示" href="#demo-expand-children">
<span>树形数据展示</span>
</a>
</li>
</ul>
<div class="api-container markdown"></div>
</section>
</div><footer id="footer">
<ul>
<li>
<h2>GitHub</h2>
<a target="_blank "href="https://github.com/ant-design/ant-design">仓库</a>
<a target="_blank" href="https://github.com/ant-design/antd-init">脚手架</a>
<a target="_blank" href="http://ant-tool.github.io/">开发工具</a>
</li>
<li>
<h2>关于我们</h2>
<a target="_blank" href="https://github.com/ant-ued/blog">博客 - Ant UED</a>
</li>
<li>
<h2>联系我们</h2>
<a target="_blank" href="https://github.com/ant-design/ant-design/issues">反馈和建议</a>
<a target="_blank" href="https://gitter.im/ant-design/ant-design">讨论</a>
<a target="_blank" href="http://dwz.cn/2AF9ao">报告 Bug</a>
</li>
<li>
<div>©2015 蚂蚁金服体验技术部出品</div>
<div>文档版本:<span id="versions-select"></span></div>
</li>
</ul>
</footer>
<script data-no-instant>
if (!location.port) {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72788897-1', 'auto');
ga('send', 'pageview');
InstantClick.on('change', function() {
ga('send', 'pageview', location.pathname + location.search);
});
}
</script>
<script data-no-instant>
InstantClick.on('change', function() {
InstantClickChangeFns.forEach(function(fn) {
fn();
});
});
InstantClick.init();
</script>
</body>
</html>