单击表格单元格时无法获取表格标题文本

Posted

技术标签:

【中文标题】单击表格单元格时无法获取表格标题文本【英文标题】:Cannot get table header text while clicking on table cell 【发布时间】:2020-09-08 02:20:18 【问题描述】:

除了单击单元格并且无法获取表格标题文本外,我的以下代码运行良好。根据代码,我可以很容易地抓取行文本。如果我在警报函数中使用 Object.keys(data) 来获取数据,这会给我所有的标题文本而不是相应的单元格。我正在使用 semantic-ui-react 表。

class NonProtectedFeatureBias extends Component 
    constructor(props)
        super(props);
        this.state =        
            staticPostData:
                dataset_id: 1
            ,
            tableData:,
        ;
    
    renderKeys (data) 
        return Object.keys(data).map(item => (<Table.HeaderCell>item</Table.HeaderCell>))
    
    renderValues (data) 
        const rows = 
        Object.values(data).forEach(col => 
          for (let [key, value] of Object.entries(col)) 
            rows[key] = rows[key] ? [...rows[key], value] : [value]
          
        )

        return Object.entries(rows).map(([item, values]) => (
          <Table.Row>
            <Table.Cell>item</Table.Cell>
               
                values.map(val => 
                    <Table.Cell 
                        className= val === 'Low' ? ('green-color') : val === 'High' ? ('red-color') : ('orange-color')  
                        selectable
                        onClick=()=>
                            alert(Object.keys(data) + " " + item);
                        
                        verticalAlign='middle'
                        > val
                    </Table.Cell> ) 
              
          </Table.Row>
        ))
    

    componentDidMount() 
        this.fetchData();
    
    fetchData()
        axios.post('http://localhost:5000/GetProxyTable', this.state.staticPostData)
         .then((response) =>
            this.setState(tableData:response.data)

        );
    
    render()
        return ( 
            <Container style=height:"250px", backgroundColor:"">
                <Table definition style=marginTop:"5px" key="mytb">
                    <Table.Header>
                        <Table.Row className="cell-with-no-padding">
                            <Table.HeaderCell className="cell-width-single" />
                            this.renderKeys(this.state.tableData)
                        </Table.Row>
                    </Table.Header>

                    <Table.Body>
                        this.renderValues(this.state.tableData)
                    </Table.Body>
                </Table>
            </Container>
        );
    

export default NonProtectedFeatureBias;

这是我从 API 得到的响应。

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

Object.keys(data) 会给你所有的coulmns。只需使用索引来获取特定的列名

像这样

Object.keys(data)[index]

代码 sn-p

...
<Table.Cell>item</Table.Cell>
 
    values.map((val,index) => //<-------------- use the index
        <Table.Cell 
            className= val === 'Low' ? ('green-color') : val === 'High' ? ('red-color') : ('orange-color')  
            selectable
            onClick=()=>
                alert(Object.keys(data)[index] + " " + item); //<----- use the index
            
            verticalAlign='middle'
            > val
        </Table.Cell> ) 
...

【讨论】:

最简单的解决方案!像魅力一样工作:D谢谢

以上是关于单击表格单元格时无法获取表格标题文本的主要内容,如果未能解决你的问题,请参考以下文章

单击指定单元格后,在搜索栏占位符中获取表格视图单元格文本值

单击单元格文本时如何从单元格中删除文本

单击表格单元格时将变量值发送到下一个视图控制器

单击表格单元格时将 UIViewController 滚动到顶部

单击表格视图单元格时加载缓慢

表格视图在按钮单击时更新单元格时反弹