@nichol88

@nichol88

Forum Replies Created

Viewing 1 post (of 1 total)
  • Author
    Posts
  • in reply to: Custom Command Column in React #101407
    nichol88
    Member

    Thanks for your reply. I don’t believe using let is the proper way to use React hooks. Regardless, I did try and got the same result.
    I have since converted to a class component as in the example, with also the same result. However I have some interesting observations.
    I started with the code in the example provided, then began adding my code to find where it starts to break. Without changing anything, I get the following error when clicking on a cell or row. Luckily it does not crash the page:
    Uncaught TypeError: Cannot read property 'disabled' of undefined
    Note: I believe there is an error in your example, <div class="demo-description"> should use “className”
    So by changing as little code as possible from the example, I believe the following code should at least log the ID of the row, but all I get is the error mentioned above. Here is the full component with dummy data:

    import React from "react";
    // import ReactDOM from "react-dom";
    import { Grid } from 'smart-webcomponents-react/grid';
    // import { GetData } from './common/data';
    class ProductWarehouseList extends React.Component {
      constructor(props){
        super(props)
        this.state = {
          showWarehouseId: 0
        }
      }
    	dataSource = new window.Smart.DataAdapter({
    		dataSource: [
          {id: 1, name: 'Test Warehouse1', warehouse_type: "Physical", location: 'Test Location'},
          {id: 2, name: 'Test Warehouse2', warehouse_type: "Physical", location: 'Test Location'},
          {id: 3, name: 'Test Warehouse3', warehouse_type: "Physical", location: 'Test Location'},
        ],
    		dataFields: [
    			'id: number',
    			'name: string',
    			'location: string',
    			'warehouse_type: string',
    		]
    	});
    	editing = {
    		enabled: true,
    		action: 'none',
    		mode: 'row',
    		commandColumn: {
    			visible: true,
    			displayMode: 'label',
    			dataSource: {
    				'commandColumnDelete': {
    					visible: false
            },
            'commandColumnEdit': {
              visible: false
            },
    				'commandColumnCustom': {
    					command: 'commandColumnCustomCommand',
    					visible: true,
    					label: 'Text'
    				}
    			}
    		}
    	};
    	columns = [
      {
        label: 'ID',
        dataField: 'id',
        width: 50
      },
      {
    		label: 'Name',
    		dataField: 'name'
    	},
    	{
    		label: 'Warehouse Type',
    		dataField: 'warehouse_type'
    	},
    	{
    		label: 'Location',
    		dataField: 'location',
    	}
    	];
    	init() {
    		window.commandColumnCustomCommand = function (row) {
          this.setState({showWarehouseId: row.data.id}, () => {
            console.log(this.state.showWarehouseId)
          })
    		};
    	}
    	componentDidMount() {
    		this.init();
    	}
    	render() {
    		return (
    			<div>
    				<Grid id="grid"
    					dataSource={this.dataSource}
    					editing={this.editing}
    					columns={this.columns}></Grid>
    			</div>
    		);
    	}
    }
    export default ProductWarehouseList;
    
Viewing 1 post (of 1 total)