Files
ant-design/components/table/index.html
T
2015-07-22 17:37:47 +08:00

1255 lines
41 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 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="一个设计&前端框架"/>
<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/antd-0.7.2.css">
<link rel="stylesheet" href="/static/style.css">
<link rel="stylesheet" href="/static/tomorrow.css">
<script>
(function (con) {
'use strict';
var prop, method;
var empty = {};
var dummy = function () {
};
var properties = 'memory'.split(',');
var methods = ('assert,clear,count,debug,dir,dirxml,error,exception,group,' +
'groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,' +
'show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn').split(',');
while (prop = properties.pop()) {
con[prop] = con[prop] || empty;
}
while (method = methods.pop()) {
con[method] = con[method] || dummy;
}
})(this.console = this.console || {});
</script>
<script src="https://a.alipayobjects.com/??bluebird/2.9.30/bluebird.js,jquery/jquery/1.11.1/jquery.js,es5-shim/4.0.5/es5-shim-debug.js,es5-shim/4.0.5/es5-sham-debug.js,html5shiv/3.7.2/src/html5shiv.js,react/0.13.3/react.js,react-router/0.13.3/ReactRouter.js"></script>
<script>
var ANT_COMPONENTS = [];
ANT_COMPONENTS.push({
title: 'Layout',
desc: '布局'
});
ANT_COMPONENTS.push({
title: 'Checkbox',
desc: '多选框'
});
ANT_COMPONENTS.push({
title: 'Iconfont',
desc: '字体图标'
});
ANT_COMPONENTS.push({
title: 'Button',
desc: '按钮'
});
ANT_COMPONENTS.push({
title: 'Radio',
desc: '单选框'
});
ANT_COMPONENTS.push({
title: 'Form',
desc: '表单'
});
ANT_COMPONENTS.push({
title: 'Switch',
desc: '开关'
});
ANT_COMPONENTS.push({
title: 'InputNumber',
desc: '数字输入框'
});
ANT_COMPONENTS.push({
title: 'Motion',
desc: '组件动画'
});
ANT_COMPONENTS.push({
title: 'Slider',
desc: '滑动输入条'
});
ANT_COMPONENTS.push({
title: 'Datepicker',
desc: '日期选择框'
});
ANT_COMPONENTS.push({
title: 'Select',
desc: '选择器'
});
ANT_COMPONENTS.push({
title: 'Tabs',
desc: '标签页'
});
ANT_COMPONENTS.push({
title: 'Steps',
desc: '步骤条'
});
ANT_COMPONENTS.push({
title: 'Breadcrumb',
desc: '面包屑'
});
ANT_COMPONENTS.push({
title: 'Collapse',
desc: '折叠面板'
});
ANT_COMPONENTS.push({
title: 'Alert',
desc: '通知栏'
});
ANT_COMPONENTS.push({
title: 'Notification',
desc: '系统通知框'
});
ANT_COMPONENTS.push({
title: 'Pagination',
desc: '分页'
});
ANT_COMPONENTS.push({
title: 'Tree',
desc: '树形控件'
});
ANT_COMPONENTS.push({
title: 'Carousel',
desc: '走马灯'
});
ANT_COMPONENTS.push({
title: 'Menu',
desc: '导航菜单'
});
ANT_COMPONENTS.push({
title: 'Tag',
desc: '标签'
});
ANT_COMPONENTS.push({
title: 'Affix',
desc: '固定'
});
ANT_COMPONENTS.push({
title: 'Upload',
desc: '文件上传'
});
ANT_COMPONENTS.push({
title: 'Modal',
desc: '对话框'
});
ANT_COMPONENTS.push({
title: 'Message',
desc: '全局提示'
});
ANT_COMPONENTS.push({
title: 'Dropdown',
desc: '下拉菜单'
});
ANT_COMPONENTS.push({
title: 'Popover',
desc: '气泡卡片'
});
ANT_COMPONENTS.push({
title: 'Popconfirm',
desc: '气泡确认框'
});
ANT_COMPONENTS.push({
title: 'Tooltip',
desc: '文字提示'
});
ANT_COMPONENTS.push({
title: 'Progress',
desc: '进度条'
});
ANT_COMPONENTS.push({
title: 'Table',
desc: '表格'
});
</script>
<script src="/static/script.js"></script>
<script>
window.antdVersion = {
latest: '0.7.2',
stable: '0.7.1'
};
</script>
<script src="/dist/antd-0.7.2.js"></script>
<script src="/dist/demo.js"></script>
<script>
window.require = function (path) {
var result = window;
var namespaces = path.split('/');
namespaces.forEach(function (key, i) {
if (i !== 0 && i === namespaces.length - 1) {
key = capitalizeFirstLetter(key);
}
if (key !== 'lib') {
if (result[key]) {
result = result[key];
} else {
throw 'There should not have modules here 2.';
}
}
});
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
return result;
};
</script>
</head>
<body >
<header id="header">
<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">
<span class="bar"></span>
<ul>
<li class="">
<a href="/">首页</a>
</li>
<li class="">
<a href="/docs/introduce">使用</a>
</li>
<li class="">
<a class="disabled" href="/design/">设计</a>
</li>
<li class="current">
<a href="/components">组件</a>
</li>
<li>
<a target="_blank" href="https://github.com/ant-design/ant-design">Github</a>
</li>
</ul>
</nav>
</header>
<div class="main-wrapper">
<aside class="aside-container">
<ul>
<li>
<h4>CSS</h4>
<ul class="">
<li class="">
<a href="../layout/">
Layout
<span class="chinese">布局</span>
</a>
</li>
<li class="">
<a href="../iconfont/">
Iconfont
<span class="chinese">字体图标</span>
</a>
</li>
<li class="">
<a href="../button/">
Button
<span class="chinese">按钮</span>
</a>
</li>
<li class="">
<a href="../form/">
Form
<span class="chinese">表单</span>
</a>
</li>
<li class="">
<a href="../motion/">
Motion
<span class="chinese">组件动画</span>
</a>
</li>
<li class="">
<a href="../alert/">
Alert
<span class="chinese">通知栏</span>
</a>
</li>
</ul>
</li>
<li>
<h4>Components</h4>
<ul class="aside-list-show">
<li class="">
<a href="../checkbox/">
Checkbox
<span class="chinese">多选框</span>
</a>
</li>
<li class="">
<a href="../radio/">
Radio
<span class="chinese">单选框</span>
</a>
</li>
<li class="">
<a href="../switch/">
Switch
<span class="chinese">开关</span>
</a>
</li>
<li class="">
<a href="../slider/">
Slider
<span class="chinese">滑动输入条</span>
</a>
</li>
<li class="">
<a href="../input-number/">
InputNumber
<span class="chinese">数字输入框</span>
</a>
</li>
<li class="">
<a href="../select/">
Select
<span class="chinese">选择器</span>
</a>
</li>
<li class="">
<a href="../datepicker/">
Datepicker
<span class="chinese">日期选择框</span>
</a>
</li>
<li class="">
<a href="../tabs/">
Tabs
<span class="chinese">标签页</span>
</a>
</li>
<li class="">
<a href="../steps/">
Steps
<span class="chinese">步骤条</span>
</a>
</li>
<li class="">
<a href="../breadcrumb/">
Breadcrumb
<span class="chinese">面包屑</span>
</a>
</li>
<li class="">
<a href="../collapse/">
Collapse
<span class="chinese">折叠面板</span>
</a>
</li>
<li class="">
<a href="../affix/">
Affix
<span class="chinese">固定</span>
</a>
</li>
<li class="">
<a href="../pagination/">
Pagination
<span class="chinese">分页</span>
</a>
</li>
<li class="">
<a href="../tree/">
Tree
<span class="chinese">树形控件</span>
</a>
</li>
<li class="">
<a href="../carousel/">
Carousel
<span class="chinese">走马灯</span>
</a>
</li>
<li class="">
<a href="../menu/">
Menu
<span class="chinese">导航菜单</span>
</a>
</li>
<li class="">
<a href="../tag/">
Tag
<span class="chinese">标签</span>
</a>
</li>
<li class="">
<a href="../upload/">
Upload
<span class="chinese">文件上传</span>
</a>
</li>
<li class="">
<a href="../notification/">
Notification
<span class="chinese">系统通知框</span>
</a>
</li>
<li class="">
<a href="../modal/">
Modal
<span class="chinese">对话框</span>
</a>
</li>
<li class="">
<a href="../message/">
Message
<span class="chinese">全局提示</span>
</a>
</li>
<li class="">
<a href="../dropdown/">
Dropdown
<span class="chinese">下拉菜单</span>
</a>
</li>
<li class="">
<a href="../popover/">
Popover
<span class="chinese">气泡卡片</span>
</a>
</li>
<li class="">
<a href="../popconfirm/">
Popconfirm
<span class="chinese">气泡确认框</span>
</a>
</li>
<li class="">
<a href="../tooltip/">
Tooltip
<span class="chinese">文字提示</span>
</a>
</li>
<li class="">
<a href="../progress/">
Progress
<span class="chinese">进度条</span>
</a>
</li>
<li class="current">
<a href="./">
Table
<span class="chinese">表格</span>
</a>
</li>
</ul>
</li>
</ul>
</aside>
<section class="main-container">
<article class="markdown">
<h1>
Table 表格
</h1>
<p>展示行列数据。</p>
<h2 id="何时使用">何时使用</h2><ul>
<li>当有大量结构化的数据需要展现时;</li>
<li>当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。</li>
</ul>
<h2 id="如何使用">如何使用</h2><p>Table 有两种模式,本地数据和远程数据模式。</p>
<p><strong>本地数据模式</strong>是指数据一次性载入内存,纯前端进行分页、筛选、排序等功能。</p>
<p>通过指定表格的数据源 <code>dataSource</code> 为一个数据数组。</p>
<div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> dataSource = [{
name: <span class="string">'胡彦斌'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'胡彦祖'</span>,
age: <span class="number">42</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}];
<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">dataSource</span>=<span class="value">{dataSource}</span> /&gt;</span></span></code></pre></div><p><strong>远程数据模式</strong>是更常见的业务场景,是一次只从服务端读取一页的数据放在前端,执行筛选、排序、切换页码等操作时均向后台发送请求,后台返回当页的数据和相关分页信息。</p>
<p>通过指定表格的数据源 <code>dataSource</code> 为一个对象如下。</p>
<div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> dataSource = {
url: <span class="string">'/api/users'</span>,
resolve: <span class="function"><span class="keyword">function</span><span class="params">(result)</span> {</span>
<span class="keyword">return</span> result.data;
},
getPagination: <span class="function"><span class="keyword">function</span><span class="params">(result)</span> {</span>}
getParams: <span class="function"><span class="keyword">function</span><span class="params">(pagination, filters, sorter)</span> {</span>}
};
<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">dataSource</span>=<span class="value">{dataSource}</span> /&gt;</span></span></code></pre></div><h2 id="api">API</h2><h3 id="table">Table</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></td>
<td>false</td>
</tr>
<tr>
<td>pagination</td>
<td>分页器</td>
<td>React.Element</td>
<td>参考 <a href="/components/pagination">pagination</a>,设为 false 时不显示分页</td>
<td></td>
</tr>
<tr>
<td>size</td>
<td>正常或迷你类型</td>
<td>string</td>
<td><code>normal</code> or <code>small</code></td>
<td>normal</td>
</tr>
<tr>
<td>dataSource</td>
<td>数据源,可以为数组(本地模式)或一个数据源描述对象(远程模式)</td>
<td>Array or Object</td>
<td></td>
<td></td>
</tr>
<tr>
<td>columns</td>
<td>表格列的配置描述,具体项见下表</td>
<td>Array</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="column">Column</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>dataIndex</td>
<td>列数据在 data 中对应的 key</td>
<td>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>render</td>
<td>生成复杂数据的渲染函数</td>
<td>Function</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>sorter</td>
<td>排序函数,本地模式下为一个函数,远程模式下为布尔值</td>
<td>Function or Boolean</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="datasource">dataSource</h3><p>远程数据源配置对象。</p>
<table>
<thead>
<tr>
<th>参数</th>
<th>说明</th>
<th>类型</th>
<th>可选值</th>
<th>默认值</th>
</tr>
</thead>
<tbody>
<tr>
<td>url</td>
<td>数据源地址</td>
<td>String</td>
<td></td>
<td></td>
</tr>
<tr>
<td>resolve</td>
<td>获得数据的解析函数,接收参数为远程数据返回的 result</td>
<td>Function</td>
<td></td>
<td></td>
</tr>
<tr>
<td>getPagination</td>
<td>和后台接口返回的分页数据进行适配的函数,返回值会传给表格中的分页器</td>
<td>Function</td>
<td></td>
<td></td>
</tr>
<tr>
<td>getParams</td>
<td>和后台接口接收的参数进行适配,返回值会作为请求的参数发送</td>
<td>Function</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</article><h2 class="component-demos">
组件演示
<i class="iconfont-home icon-all" title="展开全部代码"></i>
</h2>
<div class="code-boxes clearfix">
<div class="code-boxes-col-1-1"><div class="code-box">
<div class="code-box-demo">
<div id="components-table-demo-basic"></div>
<script>(function(){'use strict';
var Table = antd.Table;
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: "javascript:;" },
text
);
}
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}, {
title: '操作',
dataIndex: '',
render: function render(text, record) {
return React.createElement(
'span',
null,
React.createElement(
'a',
{ href: "javascript:;" },
'操作一'
),
React.createElement('span', { className: "ant-divider" }),
React.createElement(
'a',
{ href: "javascript:;" },
'操作二'
),
React.createElement('span', { className: "ant-divider" }),
React.createElement(
'a',
{ href: "javascript:;", className: "ant-dropdown-link" },
'更多 ',
React.createElement('i', { className: "anticon anticon-down" })
)
);
}
}];
var data = [{
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
React.render(React.createElement(Table, { columns: columns, dataSource: data }), document.getElementById('components-table-demo-basic'));})()</script><div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> Table = antd.Table;
<span class="keyword">var</span> columns = [{
title: <span class="string">'姓名'</span>,
dataIndex: <span class="string">'name'</span>,
render: <span class="function"><span class="keyword">function</span><span class="params">(text)</span> {</span>
<span class="keyword">return</span> <span class="xml"><span class="tag">&lt;<span class="title">a</span> <span class="attribute">href</span>=<span class="value">"javascript:;"</span>&gt;</span>{text}<span class="tag">&lt;/<span class="title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="string">'年龄'</span>,
dataIndex: <span class="string">'age'</span>
}, {
title: <span class="string">'住址'</span>,
dataIndex: <span class="string">'address'</span>
}, {
title: <span class="string">'操作'</span>,
dataIndex: <span class="string">''</span>,
render: <span class="function"><span class="keyword">function</span><span class="params">(text, record)</span> {</span>
<span class="keyword">return</span> <span class="xml"><span class="tag">&lt;<span class="title">span</span>&gt;</span>
<span class="tag">&lt;<span class="title">a</span> <span class="attribute">href</span>=<span class="value">"javascript:;"</span>&gt;</span>操作一<span class="tag">&lt;/<span class="title">a</span>&gt;</span>
<span class="tag">&lt;<span class="title">span</span> <span class="attribute">className</span>=<span class="value">"ant-divider"</span>&gt;</span><span class="tag">&lt;/<span class="title">span</span>&gt;</span>
<span class="tag">&lt;<span class="title">a</span> <span class="attribute">href</span>=<span class="value">"javascript:;"</span>&gt;</span>操作二<span class="tag">&lt;/<span class="title">a</span>&gt;</span>
<span class="tag">&lt;<span class="title">span</span> <span class="attribute">className</span>=<span class="value">"ant-divider"</span>&gt;</span><span class="tag">&lt;/<span class="title">span</span>&gt;</span>
<span class="tag">&lt;<span class="title">a</span> <span class="attribute">href</span>=<span class="value">"javascript:;"</span> <span class="attribute">className</span>=<span class="value">"ant-dropdown-link"</span>&gt;</span>
更多 <span class="tag">&lt;<span class="title">i</span> <span class="attribute">className</span>=<span class="value">"anticon anticon-down"</span>&gt;</span><span class="tag">&lt;/<span class="title">i</span>&gt;</span>
<span class="tag">&lt;/<span class="title">a</span>&gt;</span>
<span class="tag">&lt;/<span class="title">span</span>&gt;</span>;</span>
}
}];
<span class="keyword">var</span> data = [{
name: <span class="string">'胡彦斌'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'胡彦祖'</span>,
age: <span class="number">42</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'李大嘴'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}];
React.render(<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">columns</span>=<span class="value">{columns}</span> <span class="attribute">dataSource</span>=<span class="value">{data}</span> /&gt;</span>
, document.getElementById('components-table-demo-basic'));</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">基本用法</div>
<p>简单的表格,最后一列是各种操作。</p>
<span class="collapse anticon anticon-circle-o-right"></span>
</div>
</div><div class="code-box">
<div class="code-box-demo">
<div id="components-table-demo-row-selection"></div>
<script>(function(){'use strict';
var Table = antd.Table;
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: "javascript:;" },
text
);
}
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
// 通过 rowSelection 对象表明需要行选择
var rowSelection = {
onSelect: function onSelect(record, selected, selectedRows) {
console.log(record, selected, selectedRows);
},
onSelectAll: function onSelectAll(selected, selectedRows) {
console.log(selected, selectedRows);
}
};
React.render(React.createElement(Table, { rowSelection: rowSelection, columns: columns, dataSource: data }), document.getElementById('components-table-demo-row-selection'));})()</script><div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> Table = antd.Table;
<span class="keyword">var</span> columns = [{
title: <span class="string">'姓名'</span>,
dataIndex: <span class="string">'name'</span>,
render: <span class="function"><span class="keyword">function</span><span class="params">(text)</span> {</span>
<span class="keyword">return</span> <span class="xml"><span class="tag">&lt;<span class="title">a</span> <span class="attribute">href</span>=<span class="value">"javascript:;"</span>&gt;</span>{text}<span class="tag">&lt;/<span class="title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="string">'年龄'</span>,
dataIndex: <span class="string">'age'</span>
}, {
title: <span class="string">'住址'</span>,
dataIndex: <span class="string">'address'</span>
}];
<span class="keyword">var</span> data = [{
name: <span class="string">'胡彦斌'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'胡彦祖'</span>,
age: <span class="number">42</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'李大嘴'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}];
<span class="comment">// 通过 rowSelection 对象表明需要行选择</span>
<span class="keyword">var</span> rowSelection = {
onSelect: <span class="function"><span class="keyword">function</span><span class="params">(record, selected, selectedRows)</span> {</span>
console.log(record, selected, selectedRows);
},
onSelectAll: <span class="function"><span class="keyword">function</span><span class="params">(selected, selectedRows)</span> {</span>
console.log(selected, selectedRows);
}
};
React.render(<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">rowSelection</span>=<span class="value">{rowSelection}</span> <span class="attribute">columns</span>=<span class="value">{columns}</span> <span class="attribute">dataSource</span>=<span class="value">{data}</span> /&gt;</span>
, document.getElementById('components-table-demo-row-selection'));</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">选择</div>
<p>第一列是联动的选择框。</p>
<span class="collapse anticon anticon-circle-o-right"></span>
</div>
</div><div class="code-box">
<div class="code-box-demo">
<div id="components-table-demo-paging"></div>
<script>(function(){'use strict';
var Table = antd.Table;
var columns = [{
title: '姓名',
dataIndex: 'name',
render: function render(text) {
return React.createElement(
'a',
{ href: "javascript:;" },
text
);
}
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [];
for (var i = 0; i < 18; i++) {
data.push({
name: '李大嘴' + i,
age: 32,
address: '西湖区湖底公园' + i + '号'
});
}
var pagination = {
total: data.length
};
React.render(React.createElement(Table, { columns: columns, dataSource: data, pagination: pagination }), document.getElementById('components-table-demo-paging'));})()</script><div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> Table = antd.Table;
<span class="keyword">var</span> columns = [{
title: <span class="string">'姓名'</span>,
dataIndex: <span class="string">'name'</span>,
render: <span class="function"><span class="keyword">function</span><span class="params">(text)</span> {</span>
<span class="keyword">return</span> <span class="xml"><span class="tag">&lt;<span class="title">a</span> <span class="attribute">href</span>=<span class="value">"javascript:;"</span>&gt;</span>{text}<span class="tag">&lt;/<span class="title">a</span>&gt;</span>;</span>
}
}, {
title: <span class="string">'年龄'</span>,
dataIndex: <span class="string">'age'</span>
}, {
title: <span class="string">'住址'</span>,
dataIndex: <span class="string">'address'</span>
}];
<span class="keyword">var</span> data = [];
<span class="keyword">for</span> (<span class="keyword">let</span> i=<span class="number">0</span>; i&lt;<span class="number">18</span>; i++) {
data.push({
name: <span class="string">'李大嘴'</span> + i,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园'</span> + i + <span class="string">'号'</span>
});
}
<span class="keyword">var</span> pagination = {
total: data.length
};
React.render(<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">columns</span>=<span class="value">{columns}</span> <span class="attribute">dataSource</span>=<span class="value">{data}</span> <span class="attribute">pagination</span>=<span class="value">{pagination}</span> /&gt;</span>
, document.getElementById('components-table-demo-paging'));</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">分页</div>
<p>数据项较多时显示分页。</p>
<span class="collapse anticon anticon-circle-o-right"></span>
</div>
</div><div class="code-box">
<div class="code-box-demo">
<div id="components-table-demo-head"></div>
<script>(function(){'use strict';
var Table = antd.Table;
var columns = [{
title: '姓名',
dataIndex: 'name',
filters: [{
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',
sorter: function sorter(a, b) {
return a.address.length - b.address.length;
}
}];
var data = [{
name: '胡斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园12号'
}, {
name: '李大嘴',
age: 32,
address: '西湖区湖底公园123号'
}, {
name: '李秀莲大嘴哥',
age: 32,
address: '西湖区湖底公园123号'
}];
React.render(React.createElement(Table, { columns: columns, dataSource: data }), document.getElementById('components-table-demo-head'));})()</script><div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> Table = antd.Table;
<span class="keyword">var</span> columns = [{
title: <span class="string">'姓名'</span>,
dataIndex: <span class="string">'name'</span>,
filters: [{
text: <span class="string">'姓李的'</span>,
value: <span class="string">'李'</span>
}, {
text: <span class="string">'姓胡的'</span>,
value: <span class="string">'胡'</span>
}],
<span class="comment">// 指定确定筛选的条件函数</span>
<span class="comment">// 这里是名字中第一个字是 value</span>
onFilter: <span class="function"><span class="keyword">function</span><span class="params">(value, record)</span> {</span>
<span class="keyword">return</span> record.name.indexOf(value) === <span class="number">0</span>;
},
sorter: <span class="function"><span class="keyword">function</span><span class="params">(a, b)</span> {</span>
<span class="keyword">return</span> a.name.length - b.name.length;
}
}, {
title: <span class="string">'年龄'</span>,
dataIndex: <span class="string">'age'</span>,
sorter: <span class="function"><span class="keyword">function</span><span class="params">(a, b)</span> {</span>
<span class="keyword">return</span> a.age - b.age;
}
}, {
title: <span class="string">'地址'</span>,
dataIndex: <span class="string">'address'</span>,
sorter: <span class="function"><span class="keyword">function</span><span class="params">(a, b)</span> {</span>
<span class="keyword">return</span> a.address.length - b.address.length;
}
}];
<span class="keyword">var</span> data = [{
name: <span class="string">'胡斌'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'胡彦祖'</span>,
age: <span class="number">42</span>,
address: <span class="string">'西湖区湖底公园12号'</span>
}, {
name: <span class="string">'李大嘴'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园123号'</span>
}, {
name: <span class="string">'李秀莲大嘴哥'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园123号'</span>
}];
React.render(<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">columns</span>=<span class="value">{columns}</span> <span class="attribute">dataSource</span>=<span class="value">{data}</span> /&gt;</span>
, document.getElementById('components-table-demo-head'));</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">筛选和排序</div>
<p>对某一列数据进行筛选,使用列的 <code>filter</code> 属性来指定筛选的列表。</p>
<p>对某一列数据进行排序,通过指定列的 <code>sorter</code> 函数即可启动排序按钮。<code>sorter: function(a, b) { ... }</code> a、b 为比较的两个列数据。</p>
<span class="collapse anticon anticon-circle-o-right"></span>
</div>
</div><div class="code-box">
<div class="code-box-demo">
<div id="components-table-demo-ajax"></div>
<script>(function(){'use strict';
var Table = antd.Table;
var columns = [{
title: '姓名',
dataIndex: 'name',
filters: [{
text: '姓李的',
value: '李'
}, {
text: '姓胡的',
value: '胡'
}]
}, {
title: '年龄',
dataIndex: 'age',
sorter: true
}, {
title: '住址',
dataIndex: 'address'
}];
function resolve(result) {
return result.data;
}
var dataSource = {
url: "/components/table/demo/data.json",
resolve: function resolve(result) {
return result.data;
},
// 和后台接口返回的分页数据进行适配
getPagination: function getPagination(result) {
return {
total: result.totalCount,
pageSize: result.pageSize
};
},
// 和后台接口接收的参数进行适配
// 参数里提供了分页、筛选、排序的信息
getParams: function getParams(pagination, filters, sorter) {
console.log(pagination, filters, sorter);
var params = {
pageSize: pagination.pageSize,
currentPage: pagination.current,
sortField: sorter.field,
sortOrder: sorter.order
};
for (var key in filters) {
params[key] = filters[key];
}
console.log('请求参数:', params);
return params;
}
};
React.render(React.createElement(Table, { columns: columns, dataSource: dataSource }), document.getElementById('components-table-demo-ajax'));})()</script><div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> Table = antd.Table;
<span class="keyword">var</span> columns = [{
title: <span class="string">'姓名'</span>,
dataIndex: <span class="string">'name'</span>,
filters: [{
text: <span class="string">'姓李的'</span>,
value: <span class="string">'李'</span>
}, {
text: <span class="string">'姓胡的'</span>,
value: <span class="string">'胡'</span>
}]
}, {
title: <span class="string">'年龄'</span>,
dataIndex: <span class="string">'age'</span>,
sorter: <span class="literal">true</span>
}, {
title: <span class="string">'住址'</span>,
dataIndex: <span class="string">'address'</span>
}];
<span class="function"><span class="keyword">function</span> <span class="title">resolve</span><span class="params">(result)</span> {</span>
<span class="keyword">return</span> result.data;
}
<span class="keyword">var</span> dataSource = {
url: <span class="string">"/components/table/demo/data.json"</span>,
resolve: <span class="function"><span class="keyword">function</span><span class="params">(result)</span> {</span>
<span class="keyword">return</span> result.data;
},
<span class="comment">// 和后台接口返回的分页数据进行适配</span>
getPagination: <span class="function"><span class="keyword">function</span><span class="params">(result)</span> {</span>
<span class="keyword">return</span> {
total: result.totalCount,
pageSize: result.pageSize
}
},
<span class="comment">// 和后台接口接收的参数进行适配</span>
<span class="comment">// 参数里提供了分页、筛选、排序的信息</span>
getParams: <span class="function"><span class="keyword">function</span><span class="params">(pagination, filters, sorter)</span> {</span>
console.log(pagination, filters, sorter);
<span class="keyword">var</span> params = {
pageSize: pagination.pageSize,
currentPage: pagination.current,
sortField: sorter.field,
sortOrder: sorter.order
};
<span class="keyword">for</span> (<span class="keyword">let</span> key <span class="keyword">in</span> filters) {
params[key] = filters[key];
}
console.log(<span class="string">'请求参数:'</span>, params);
<span class="keyword">return</span> params;
}
};
React.render(<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">columns</span>=<span class="value">{columns}</span> <span class="attribute">dataSource</span>=<span class="value">{dataSource}</span> /&gt;</span>
, document.getElementById('components-table-demo-ajax'));</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">动态加载数据</div>
<p>远程读取的表格是<strong>更为常见的模式</strong>,下面的表格使用了 <code>dataSource</code> 对象和远程数据源绑定和适配,并具有筛选、排序等功能以及页面 loading 效果。</p>
<p><strong>注意,此示例是静态数据模拟,数据并不准确,请打开网络面板查看请求。</strong></p>
<span class="collapse anticon anticon-circle-o-right"></span>
</div>
</div><div class="code-box">
<div class="code-box-demo">
<div id="components-table-demo-small"></div>
<script>(function(){'use strict';
var Table = antd.Table;
var columns = [{
title: '姓名',
dataIndex: 'name'
}, {
title: '年龄',
dataIndex: 'age'
}, {
title: '住址',
dataIndex: 'address'
}];
var data = [{
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号'
}, {
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号'
}, {
name: '李大嘴',
age: 32,
address: '西湖区湖底公园1号'
}];
React.render(React.createElement(Table, { columns: columns, dataSource: data, size: "small" }), document.getElementById('components-table-demo-small'));})()</script><div class="highlight"><pre><code class="javascript"><span class="keyword">var</span> Table = antd.Table;
<span class="keyword">var</span> columns = [{
title: <span class="string">'姓名'</span>,
dataIndex: <span class="string">'name'</span>
}, {
title: <span class="string">'年龄'</span>,
dataIndex: <span class="string">'age'</span>
}, {
title: <span class="string">'住址'</span>,
dataIndex: <span class="string">'address'</span>
}];
<span class="keyword">var</span> data = [{
name: <span class="string">'胡彦斌'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'胡彦祖'</span>,
age: <span class="number">42</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}, {
name: <span class="string">'李大嘴'</span>,
age: <span class="number">32</span>,
address: <span class="string">'西湖区湖底公园1号'</span>
}];
React.render(<span class="xml"><span class="tag">&lt;<span class="title">Table</span> <span class="attribute">columns</span>=<span class="value">{columns}</span> <span class="attribute">dataSource</span>=<span class="value">{data}</span> <span class="attribute">size</span>=<span class="value">"small"</span> /&gt;</span>
, document.getElementById('components-table-demo-small'));</span></code></pre></div>
</div>
<div class="code-box-meta markdown">
<div class="code-box-title">小型列表</div>
<p><code>size=&quot;small&quot;</code>, 用在对话框等空间较小的地方。</p>
<span class="collapse anticon anticon-circle-o-right"></span>
</div>
</div>
</div>
</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/ant-design/tree/master/style">样式</a>
<a target="_blank" href="https://github.com/ant-design/antd-bin">开发工具</a>
</li>
<li>
<h2>关于我们</h2>
<a href="http://www.atatech.org/teams/79">博客 - Ant UED</a>
</li>
<li>
<h2>联系我们</h2>
<a target="_blank" href="https://github.com/ant-design/ant-design/issues">问题与建议 - Issues</a>
</li>
<li>
<h3>©2015 蚂蚁金服体验技术部出品</h3>
</li>
</ul>
</footer>
</body>
</html>