zoukankan      html  css  js  c++  java
  • 【react + antd + table组件】上下移动光标

     <div
                     tabIndex={1}
                     onKeyDown={this.handleOnKeydown}
                     style={{outline: 'none'}} 
                     className="ordTempDateil"
                     >
                      <Modal
                        key='3'
                        width='800px'
                        visible={OrdDaShow}
                        closable={false}
                        title={false}
                        centered={true}
                        pagination={false}
                        footer={null}
                        onCancel={this.handleTemDaCancel}>
                        <Table
                          columns={OrdDaColumns}
                          pagination={false}
                          rowClassName={this.setOrdDaRowClassName}
                          onRow={this.onClickOrdDaRow}
                          rowKey={record => record.key}
                          // expandedRowRender={expandedRowRender}
                          dataSource={this.state.ordDetailData}
                          style={{
                            height: '500px',
                            overflow: 'auto'
                          }}
                        />
                        <div style={{ position: "absolute", bottom: "8px" }}>
                          <p>当前允许录入类型:{this.state.OrdCanType}</p>
                        </div>
                        <Pagination
                          showTotal={() => this.showTotal(this.state.total)}
                          size="small"
                          showQuickJumper
                          showSizeChanger
                          defaultCurrent={1}
                          current={this.state.page ? this.state.page : 1}
                          total={this.state.total ? this.state.total : 0}
                          onChange={this.onChange}
                          onShowSizeChange={this.onShowSizeChange}
                          style={{ textAlign: "right", marginTop: '13px' }}
                        />
                      </Modal>
                    </div>
    

      

     //详细信息页面上下移动
      handleOnKeydown = (e) => {
        var e = window.event || e;
        let id = '';
        const {ordDetailData} = this.state
        let oneArr = ordDetailData&&ordDetailData.length > 0 ? ordDetailData: [];
        switch (e.keyCode) {
        case 13:
            e.preventDefault();
            if (this.state.OrdDaRowId) {
              this.setState({
                visible: false,
              })
                let obj = {}
                for(var i = 0; i < oneArr.length; i++) {
                    if (oneArr[i].id === this.state.OrdDaRowId) {
                        obj = i > 0 ? oneArr[i] : oneArr[0];
                        break;
                    }
                }
                // console.log("当前",obj)
                this.setState({
                  visible: false,
                  OrdDaRowId: obj.id, 
                  })
                this.checkNowData(obj)
                // this.confirmSelection(obj);
            } else {
                message.info("请选择一条需要操作的数据")
            }
            break;
        case 38: //上
            if (this.state.OrdDaRowId) {
                for(var i = 0; i < oneArr.length; i++) {
                    if (oneArr[i].id === this.state.OrdDaRowId) {
                        id = i > 0 ? oneArr[i - 1].id : oneArr[0].id;
                        break;
                    }
                }
                this.setState({OrdDaRowId: id})
            } else {
                this.setState({OrdDaRowId: oneArr[0].id})
            }
            break;
        case 40: //下
            if (this.state.OrdDaRowId) {
                for(let i = 0; i < oneArr.length; i++) {
                  oneArr[i].disblock = false
                    if (oneArr[i].id === this.state.OrdDaRowId) {
                        id = i + 1 >= oneArr.length ? oneArr[oneArr.length - 1].id : oneArr[i + 1].id;
                        break;
                    }
                }
                this.setState({OrdDaRowId: id})
            } else {
                this.setState({OrdDaRowId: oneArr[0].id})
            }
            break;
        }
    }
    

      

    ordDetailData table数据  
    OrdDaRowId 当前行id
     
      //设置row颜色
        setOrdDaRowClassName = (record) => {
          return record.id === this.state.OrdDaRowId ? 'clickRowStyl' : '';
        }
    

     主要思路:table数据 行id 控制当前行高亮

     
  • 相关阅读:
    MiniOS系统
    《硅谷传奇》
    《构建之法》1—3章
    学术诚信与职业道德
    Sprint2
    Scrum 项目 7.0 Sprint回顾
    Scrum 项目 6.0 sprint演示
    Scrum 项目 5.0
    Scrum 项目4.0
    操作系统 实验三 进程调度模拟程序
  • 原文地址:https://www.cnblogs.com/522040-m/p/14435713.html
Copyright © 2011-2022 走看看