提交 07f0ace6 编写于 作者: A afc163

fix table style and local mode

上级 fb7c4db9
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
远程读取的表格是**更为常见的模式**,下面的表格使用了 `dataSource` 对象和远程数据源绑定和适配,并具有筛选、排序等功能以及页面 loading 效果。 远程读取的表格是**更为常见的模式**,下面的表格使用了 `dataSource` 对象和远程数据源绑定和适配,并具有筛选、排序等功能以及页面 loading 效果。
此示例是静态数据模拟,数据可能不准确,请打开网络面板查看请求。 **注意,此示例是静态数据模拟,数据并不准确,请打开网络面板查看请求。**
--- ---
......
...@@ -12,7 +12,7 @@ var columns = [{ ...@@ -12,7 +12,7 @@ var columns = [{
title: '姓名', title: '姓名',
dataIndex: 'name', dataIndex: 'name',
render: function(text) { render: function(text) {
return <a href="#">{text}</a>; return <a href="javascript:;">{text}</a>;
} }
}, { }, {
title: '年龄', title: '年龄',
...@@ -25,11 +25,11 @@ var columns = [{ ...@@ -25,11 +25,11 @@ var columns = [{
dataIndex: '', dataIndex: '',
render: function(text, record) { render: function(text, record) {
return <span> return <span>
<a href="#">删除</a> <a href="javascript:;">操作一</a>
<span className="ant-divider">|</span> <span className="ant-divider">|</span>
<a href="#">操作</a> <a href="javascript:;">操作二</a>
<span className="ant-divider">|</span> <span className="ant-divider">|</span>
<a href="#" className="ant-dropdown-link"> <a href="javascript:;" className="ant-dropdown-link">
更多 <i className="anticon anticon-down"></i> 更多 <i className="anticon anticon-down"></i>
</a> </a>
</span>; </span>;
......
...@@ -24,6 +24,9 @@ var columns = [{ ...@@ -24,6 +24,9 @@ var columns = [{
// 这里是名字中第一个字是 value // 这里是名字中第一个字是 value
onFilter: function(value, record) { onFilter: function(value, record) {
return record.name.indexOf(value) === 0; return record.name.indexOf(value) === 0;
},
sorter: function(a, b) {
return a.name.length - b.name.length;
} }
}, { }, {
title: '年龄', title: '年龄',
...@@ -40,7 +43,7 @@ var columns = [{ ...@@ -40,7 +43,7 @@ var columns = [{
}]; }];
var data = [{ var data = [{
name: '', name: '胡斌',
age: 32, age: 32,
address: '西湖区湖底公园1号' address: '西湖区湖底公园1号'
}, { }, {
...@@ -51,6 +54,10 @@ var data = [{ ...@@ -51,6 +54,10 @@ var data = [{
name: '李大嘴', name: '李大嘴',
age: 32, age: 32,
address: '西湖区湖底公园123号' address: '西湖区湖底公园123号'
}, {
name: '李秀莲大嘴哥',
age: 32,
address: '西湖区湖底公园123号'
}]; }];
React.render(<Table columns={columns} dataSource={data} /> React.render(<Table columns={columns} dataSource={data} />
......
...@@ -13,7 +13,7 @@ var columns = [{ ...@@ -13,7 +13,7 @@ var columns = [{
title: '姓名', title: '姓名',
dataIndex: 'name', dataIndex: 'name',
render: function(text) { render: function(text) {
return <a href="#">{text}</a>; return <a href="javascript:;">{text}</a>;
} }
}, { }, {
title: '年龄', title: '年龄',
......
...@@ -12,7 +12,7 @@ var columns = [{ ...@@ -12,7 +12,7 @@ var columns = [{
title: '姓名', title: '姓名',
dataIndex: 'name', dataIndex: 'name',
render: function(text) { render: function(text) {
return <a href="#">{text}</a>; return <a href="javascript:;">{text}</a>;
} }
}, { }, {
title: '年龄', title: '年龄',
......
...@@ -53,6 +53,7 @@ let AntTable = React.createClass({ ...@@ -53,6 +53,7 @@ let AntTable = React.createClass({
toggleSortOrder(order, column) { toggleSortOrder(order, column) {
let sortColumn = this.state.sortColumn; let sortColumn = this.state.sortColumn;
let sortOrder = this.state.sortOrder; let sortOrder = this.state.sortOrder;
let sorter;
// 同时允许一列进行排序,否则会导致排序顺序的逻辑问题 // 同时允许一列进行排序,否则会导致排序顺序的逻辑问题
if (sortColumn) { if (sortColumn) {
sortColumn.className = ''; sortColumn.className = '';
...@@ -71,7 +72,7 @@ let AntTable = React.createClass({ ...@@ -71,7 +72,7 @@ let AntTable = React.createClass({
} }
} }
if (this.mode === 'local') { if (this.mode === 'local') {
let sorter = function() { sorter = function() {
let result = column.sorter.apply(this, arguments); let result = column.sorter.apply(this, arguments);
if (sortOrder === 'ascend') { if (sortOrder === 'ascend') {
return result; return result;
...@@ -79,29 +80,29 @@ let AntTable = React.createClass({ ...@@ -79,29 +80,29 @@ let AntTable = React.createClass({
return -result; return -result;
} }
}; };
if (sortOrder) {
this.props.dataSource = this.props.dataSource.sort(sorter);
} else {
this.props.dataSource = this.originDataSource.slice();
}
} }
this.setState({ this.setState({
sortOrder: sortOrder, sortOrder: sortOrder,
sortColumn: sortColumn sortColumn: sortColumn,
sorter: sorter
}, this.fetch); }, this.fetch);
}, },
handleFilter(column) { handleFilter(column) {
let columnIndex = this.props.columns.indexOf(column);
let filterFns = [];
if (this.mode === 'local') { if (this.mode === 'local') {
this.props.dataSource = this.originDataSource.slice().filter(function(record) { filterFns[columnIndex] = function(record) {
if (column.selectedFilters.length === 0) { if (column.selectedFilters.length === 0) {
return true; return true;
} }
return column.selectedFilters.some(function(value) { return column.selectedFilters.some(function(value) {
return column.onFilter.call(this, value, record); return column.onFilter.call(this, value, record);
}); });
}); };
} }
this.fetch(); this.setState({
filterFns: filterFns
}, this.fetch);
}, },
handleSelect(rowIndex, e) { handleSelect(rowIndex, e) {
let checked = e.target.checked; let checked = e.target.checked;
...@@ -285,15 +286,33 @@ let AntTable = React.createClass({ ...@@ -285,15 +286,33 @@ let AntTable = React.createClass({
} }
}); });
} else { } else {
let pageSize = this.state.pagination.pageSize; var data = this.props.dataSource;
let current = this.state.pagination.current; var pageSize = this.state.pagination.pageSize;
this.setState({ var current = this.state.pagination.current;
data: this.props.dataSource.filter(function(item, i) { // 排序
if (i >= (current - 1) * pageSize && if (this.state.sortOrder && this.state.sorter) {
i < current * pageSize) { data = data.sort(this.state.sorter);
return item; } else {
data = this.originDataSource.slice();
}
// 筛选
if (this.state.filterFns) {
this.state.filterFns.forEach(function(filterFn) {
if (typeof filterFn === 'function') {
data = data.filter(filterFn);
} }
}) });
}
// 分页
data = data.filter(function(item, i) {
if (i >= (current - 1) * pageSize &&
i < current * pageSize) {
return item;
}
});
// 完成数据
this.setState({
data: data
}); });
} }
}, },
......
...@@ -22,7 +22,9 @@ ...@@ -22,7 +22,9 @@
transition: background .3s ease; transition: background .3s ease;
.anticon-bars { .anticon-bars {
margin-left: 8px; margin-left: 4px;
position: relative;
top: -1px;
font-size: ~"10px \9"; // ie8-9 font-size: ~"10px \9"; // ie8-9
.scale(0.83); .scale(0.83);
cursor: pointer; cursor: pointer;
...@@ -35,6 +37,7 @@ ...@@ -35,6 +37,7 @@
.@{tablePrefixClass}-filter-dropdown { .@{tablePrefixClass}-filter-dropdown {
min-width: 88px; min-width: 88px;
margin-left: -8px;
.ant-dropdown-menu-item { .ant-dropdown-menu-item {
overflow: hidden; overflow: hidden;
padding: 7px 8px; padding: 7px 8px;
...@@ -129,7 +132,7 @@ ...@@ -129,7 +132,7 @@
} }
&-column-sorter { &-column-sorter {
margin-left: 8px; margin-left: 4px;
display: inline-block; display: inline-block;
width: 12px; width: 12px;
height: 14px; height: 14px;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册