import React, { Component } from 'react';
export class CheckboxRenderer extends Component{
constructor(props) {
super(props);
if(this.props.colDef.field==='noRestrictions'){
this.state={
value:true,
disable:false
};
}
else if(this.props.colDef.field==='doNotBuy')
{
this.state={
value:false,
disable:true
};
}
this.handleCheckboxChange=this.handleCheckboxChange.bind(this);
}
handleCheckboxChange(event) {
//this.props.data.checkbox=!this.props.data.checkbox; ={this.state.show}
//this.setState({value: this.props.data.checkbox});
if(this.state.value){this.setState({value: false});}
else{this.setState({value: true});}
alert(this.state.value);
//check for the last row and check for the columnname and enable the other columns
}
render() {
return (
<input type='checkbox' checked={this.state.value} disabled={this.state.disable} onChange={this.handleCheckboxChange}/>
);
}
}
export default CheckboxRenderer;
import React, { Component } from 'react';
import './App.css';
import { AgGridReact } from 'ag-grid-react';
import CheckboxRenderer from './CheckboxRenderer';
import 'ag-grid/dist/styles/ag-grid.css';
import 'ag-grid/dist/styles/ag-theme-balham.css';
class App extends Component {
constructor(props) {
super(props);
let enableOtherFields=false;
this.state = {
columnDefs: [
{headerName: 'Make', field: 'make'},
{headerName: 'noRestrictions', field: 'noRestrictions',
cellRendererFramework: CheckboxRenderer,
cellRendererParams:{checkedVal:true,disable:false},
onCellClicked: function (event) {
// event.node.columnApi.columnController.gridColumns[1].colDef.cellRendererParams.checkedVal=!event.node.columnApi.columnController.gridColumns[1].colDef.cellRendererParams.checkedVal;
// event.node.data.checkbox=!event.data.checkbox;
let currentNode=event.node.id;
event.api.forEachNode((node) => {
if(node.id===currentNode)
{
node.data.checkbox=!node.data.checkbox;
}
//if(!node.columnApi.columnController.gridColumns[1].colDef.cellRendererParams.checkedVal){ // checkbox is unchecked
if(node.data.checkbox===false && node.data.checkbox!=='undefined'){
enableOtherFields=true;
}
else
{
enableOtherFields=false;
}
//alert(node.id);
//alert(event.colDef.cellRendererParams.checkedVal);
}); alert("enable other fields:"+enableOtherFields);
}
},
{headerName:'doNotBuy',field:'doNotBuy',
cellRendererFramework: CheckboxRenderer,
cellRendererParams:{checkedVal:false,disable:true}
},
{headerName: 'Price', field: 'price', editable: true}
],
rowData: [
{make: "Toyota",noRestrictions:true,doNotBuy:false, price: 35000},
{make: "Ford", noRestrictions:true,doNotBuy:false,price: 32000},
{make: "Porsche", noRestrictions:true,doNotBuy:false, price: 72000}
]
};
}
componentDidMount() {
}
render() {
return (
<div
className="ag-theme-balham"
style={{height: '200px', width: '800px'}}
>
<AgGridReact
enableSorting={true}
enableFilter={true}
//pagination={true}
columnDefs={this.state.columnDefs}
rowData={this.state.rowData}>
</AgGridReact>
</div>
);
}
}
export default App;