feat(multiSelect.js): 新增selectDisabled可以设置某一行数据无法被全选

This commit is contained in:
huyueb 2017-12-27 16:23:25 +08:00
parent 908e8489ca
commit d2d6d09d1e
5 changed files with 42 additions and 16 deletions

View File

@ -89,6 +89,7 @@ class Demo extends Component {
| expandIconAsCell | 展开按钮是否单独作为一个单元格 | bool | false | | expandIconAsCell | 展开按钮是否单独作为一个单元格 | bool | false |
| expandRowByClick | 设置展开行是否通过点击行触发,此参数需要与上面参数搭配使用(默认是通过点击行前面的加号展开行 | bool | false | | expandRowByClick | 设置展开行是否通过点击行触发,此参数需要与上面参数搭配使用(默认是通过点击行前面的加号展开行 | bool | false |
| footerScroll | 表尾和body是否公用同一个横向滚动条。 如果footer中也是一个table组件并且也具有滚动条那么也需要加入footerScroll参数。 | bool | false | | footerScroll | 表尾和body是否公用同一个横向滚动条。 如果footer中也是一个table组件并且也具有滚动条那么也需要加入footerScroll参数。 | bool | false |
*注意: 一旦使用了expandedRowRender参数data参数中的key属性必须设置。否则会导致无法展开* *注意: 一旦使用了expandedRowRender参数data参数中的key属性必须设置。否则会导致无法展开*
### Column ### Column
@ -128,6 +129,7 @@ import multiSelect from "bee-table/build/lib/multiSelect.js"
| multiSelect.type | 全选功能的类型,多选或单选(暂时只支持多选) | string | checkbox | | multiSelect.type | 全选功能的类型,多选或单选(暂时只支持多选) | string | checkbox |
| multiSelect.param | 通过设置该参数来设计获取的数据数组,默认返还所有数据 | string | '' | | multiSelect.param | 通过设置该参数来设计获取的数据数组,默认返还所有数据 | string | '' |
| getSelectedDataFunc | 返回当前选中的数据数组 | Function | 无 | | getSelectedDataFunc | 返回当前选中的数据数组 | Function | 无 |
| selectDisabled | 设置某一行数据无法被选中使用类似于rowClassName | Function(record, index):bool | 无 |

View File

@ -1,9 +1,9 @@
/** /**
* *
* @title 列排序全选功能合计 * @title 列排序全选功能合计
* @description 列排序全选功能合计通过使用的封装好的功能方法实现复杂功能简单易用 * @description 列排序全选功能合计通过使用的封装好的功能方法实现复杂功能简单易用
* *
*/ */
import React, { Component } from "react"; import React, { Component } from "react";
import Table from "../../src"; import Table from "../../src";
@ -17,48 +17,65 @@ const columns13 = [
title: "名字", title: "名字",
dataIndex: "a", dataIndex: "a",
key: "a", key: "a",
width: 100 width: 200
}, },
{ {
title: "性别", title: "性别",
dataIndex: "b", dataIndex: "b",
key: "b", key: "b",
width: 100 width: 200
}, },
{ {
title: "年龄", title: "年龄",
dataIndex: "c", dataIndex: "c",
key: "c", key: "c",
width: 200, width: 200,
sumCol:true, sumCol: true,
sorter: (a, b) => a.c - b.c
},
{
title: "年龄",
dataIndex: "c",
key: "c",
width: 200,
sumCol: true,
sorter: (a, b) => a.c - b.c sorter: (a, b) => a.c - b.c
}, },
{ {
title: "武功级别", title: "武功级别",
dataIndex: "d", dataIndex: "d",
key: "d" key: "d",
width: 200
} }
]; ];
const data13 = [ const data13 = [
{ a: "杨过", b: "男", c: 30,d:'内行', key: "2" }, { a: "杨过", b: "男", c: 30, d: "内行", key: "2" },
{ a: "令狐冲", b: "男", c: 41,d:'大侠', key: "1" }, { a: "令狐冲", b: "男", c: 41, d: "大侠", key: "1" },
{ a: "郭靖", b: "男", c: 25,d:'大侠', key: "3" } { a: "郭靖", b: "男", c: 25, d: "大侠", key: "3" }
]; ];
//拼接成复杂功能的table组件不能在render中定义需要像此例子声明在组件的外侧不然操作state会导致功能出现异常 //拼接成复杂功能的table组件不能在render中定义需要像此例子声明在组件的外侧不然操作state会导致功能出现异常
let ComplexTable = multiSelect(sum(sort(Table))); let ComplexTable = multiSelect(sum(sort(Table)));
class Demo13 extends Component { class Demo13 extends Component {
getSelectedDataFunc = (data) =>{ getSelectedDataFunc = data => {
console.log(data) console.log(data);
} };
selectDisabled = (record, index) => {
if (index === 1) {
return true;
}
return false;
};
render() { render() {
let multiObj = { let multiObj = {
type: "checkbox", type: "checkbox"
}; };
return ( return (
<div> <div>
<ComplexTable <ComplexTable
selectDisabled={this.selectDisabled}
columns={columns13} columns={columns13}
data={data13} data={data13}
multiSelect={multiObj} multiSelect={multiObj}

View File

@ -47,6 +47,7 @@ import 'bee-table/build/Table.css';
| expandIconAsCell | 展开按钮是否单独作为一个单元格 | bool | false | | expandIconAsCell | 展开按钮是否单独作为一个单元格 | bool | false |
| expandRowByClick | 设置展开行是否通过点击行触发,此参数需要与上面参数搭配使用(默认是通过点击行前面的加号展开行 | bool | false | | expandRowByClick | 设置展开行是否通过点击行触发,此参数需要与上面参数搭配使用(默认是通过点击行前面的加号展开行 | bool | false |
| footerScroll | 表尾和body是否公用同一个横向滚动条。 如果footer中也是一个table组件并且也具有滚动条那么也需要加入footerScroll参数。 | bool | false | | footerScroll | 表尾和body是否公用同一个横向滚动条。 如果footer中也是一个table组件并且也具有滚动条那么也需要加入footerScroll参数。 | bool | false |
*注意: 一旦使用了expandedRowRender参数data参数中的key属性必须设置。否则会导致无法展开* *注意: 一旦使用了expandedRowRender参数data参数中的key属性必须设置。否则会导致无法展开*
### Column ### Column

View File

@ -21,6 +21,8 @@ import multiSelect from "bee-table/build/lib/multiSelect.js"
| multiSelect.type | 全选功能的类型,多选或单选(暂时只支持多选) | string | checkbox | | multiSelect.type | 全选功能的类型,多选或单选(暂时只支持多选) | string | checkbox |
| multiSelect.param | 通过设置该参数来设计获取的数据数组,默认返还所有数据 | string | '' | | multiSelect.param | 通过设置该参数来设计获取的数据数组,默认返还所有数据 | string | '' |
| getSelectedDataFunc | 返回当前选中的数据数组 | Function | 无 | | getSelectedDataFunc | 返回当前选中的数据数组 | Function | 无 |
| selectDisabled | 设置某一行数据无法被选中使用类似于rowClassName | Function(record, index):bool | 无 |

View File

@ -96,6 +96,7 @@ export default function multiSelect(Table) {
}; };
renderColumnsMultiSelect(columns) { renderColumnsMultiSelect(columns) {
const { data } = this.state; const { data } = this.state;
let {selectDisabled} = this.props;
let checkedObj = Object.assign({}, this.state.checkedObj); let checkedObj = Object.assign({}, this.state.checkedObj);
let checkedArray = Object.keys(checkedObj); let checkedArray = Object.keys(checkedObj);
let { multiSelect } = this.props; let { multiSelect } = this.props;
@ -124,11 +125,14 @@ export default function multiSelect(Table) {
), ),
key: "checkbox", key: "checkbox",
dataIndex: "checkbox", dataIndex: "checkbox",
width: "100px",
render: (text, record, index) => { render: (text, record, index) => {
let bool = selectDisabled(record, index);
return ( return (
<Checkbox <Checkbox
className="table-checkbox" className="table-checkbox"
checked={checkedObj[record.key]} checked={checkedObj[record.key]}
disabled={bool}
onChange={this.onCheckboxChange.bind( onChange={this.onCheckboxChange.bind(
this, this,
text, text,