feat(multiSelect.js): 新增selectDisabled可以设置某一行数据无法被全选
This commit is contained in:
parent
908e8489ca
commit
d2d6d09d1e
|
@ -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 | 无 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 | 无 |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue