提交 4d2119c3 编写于 作者: A afc163

prepare getParams arguments, filters, pagination, sorters

上级 ad046493
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- order: 7 - order: 7
`dataSource="/api/data.json"`,列表数据是远程读取的,并有 loading 效果。 远程读取的表格是**更为常见的模式**,下面的表格使用了 `dataSource` 对象和远程数据源绑定和适配,并具有筛选、排序等功能以及页面 loading 效果。
--- ---
...@@ -10,10 +10,18 @@ ...@@ -10,10 +10,18 @@
var Table = antd.Table; var Table = antd.Table;
var columns = [{ var columns = [{
title: '姓名', title: '姓名',
dataIndex: 'name' dataIndex: 'name',
filters: [{
text: '姓李的',
value: ''
}, {
text: '姓胡的',
value: ''
}]
}, { }, {
title: '年龄', title: '年龄',
dataIndex: 'age' dataIndex: 'age',
sorter: true
}, { }, {
title: '住址', title: '住址',
dataIndex: 'address' dataIndex: 'address'
...@@ -34,6 +42,11 @@ var dataSource = { ...@@ -34,6 +42,11 @@ var dataSource = {
total: result.totalCount, total: result.totalCount,
pageSize: result.pageSize pageSize: result.pageSize
} }
},
getParams: function(pagination, filters, sorters) {
let params = {};
console.log(pagination, filters, sorters);
return params;
} }
}; };
......
...@@ -40,7 +40,6 @@ let AntTable = React.createClass({ ...@@ -40,7 +40,6 @@ let AntTable = React.createClass({
return { return {
selectedRowKeys: [], selectedRowKeys: [],
loading: false, loading: false,
selectedFilters: [],
pagination: pagination, pagination: pagination,
data: [] data: []
}; };
...@@ -83,15 +82,16 @@ let AntTable = React.createClass({ ...@@ -83,15 +82,16 @@ let AntTable = React.createClass({
this.fetch(); this.fetch();
}, },
handleFilter(column) { handleFilter(column) {
this.props.dataSource = this.originDataSource.slice().filter(function(record) { if (this.mode === 'local') {
if (column.selectedFilters.length === 0) { this.props.dataSource = this.originDataSource.slice().filter(function(record) {
return true; if (column.selectedFilters.length === 0) {
} return true;
return column.selectedFilters.some(function(value) { }
var result = column.onFilter.call(this, value, record); return column.selectedFilters.some(function(value) {
return result; return column.onFilter.call(this, value, record);
});
}); });
}); }
this.fetch(); this.fetch();
}, },
handleSelectFilter(column, selected) { handleSelectFilter(column, selected) {
...@@ -231,6 +231,24 @@ let AntTable = React.createClass({ ...@@ -231,6 +231,24 @@ let AntTable = React.createClass({
onChange={this.handlePageChange} onChange={this.handlePageChange}
{...this.state.pagination} />; {...this.state.pagination} />;
}, },
prepareParamsArguments() {
// 准备筛选、排序、分页的参数
let pagination;
let filters = {};
let sorters = {};
pagination = this.state.pagination;
this.props.columns.forEach(function(column) {
if (column.dataIndex && column.selectedFilters &&
column.selectedFilters.length > 0) {
filters[column.dataIndex] = column.selectedFilters;
}
if (column.dataIndex && column.sorter &&
column.sortOrder) {
sorters[column.dataIndex] = column.sortOrder;
}
});
return [pagination, filters, sorters];
},
fetch: function() { fetch: function() {
let dataSource = this.props.dataSource; let dataSource = this.props.dataSource;
if (this.mode === 'remote') { if (this.mode === 'remote') {
...@@ -239,7 +257,7 @@ let AntTable = React.createClass({ ...@@ -239,7 +257,7 @@ let AntTable = React.createClass({
}); });
jQuery.ajax({ jQuery.ajax({
url: dataSource.url, url: dataSource.url,
params: dataSource.getParams(), params: dataSource.getParams.apply(this, this.prepareParamsArguments()),
success: (result) => { success: (result) => {
if (this.isMounted()) { if (this.isMounted()) {
let pagination = jQuery.extend( let pagination = jQuery.extend(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册