【问题标题】:Get value of clicked cell on grid获取网格上单击的单元格的值
【发布时间】:2014-02-05 11:20:36
【问题描述】:

我一直在尝试获取网格上单击的单元格的值。

cellDblClick: function(self, td, cellIndex, record, tr, rowIndex, e, eOpts)

我知道我可以获取记录数据,但是我需要列的名称来获取数据的值。

record.data["name_of_column"]

获取网格上单击的单元格值的方法是什么? 是否可以获取网格上单击单元格的列名?

谁能帮我解释一下?

注意 我正在使用 extjs 4.2.1

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

    您可以将网格的 viewConfig 与 cellclick 侦听器一起使用,如下所示。

     viewConfig : {
        listeners : {
            cellclick : function(view, cell, cellIndex, record,row, rowIndex, e) {
    
                  var clickedDataIndex = view.panel.headerCt.getHeaderAtIndex(cellIndex).dataIndex;
                  var clickedColumnName = view.panel.headerCt.getHeaderAtIndex(cellIndex).text;
                  var clickedCellValue = record.get(clickedDataIndex);
              }
         }
     }
    

    【讨论】:

      【解决方案2】:

      你可以使用:

      onGridpanelCellDblClick: function(tableview, td, cellIndex, record, tr, rowIndex, e, eOpts) {
          var clickedColumnName = record.getFields()[cellIndex-1].getName();
          var clickedCellValue = record.get(clickedColumnName);
      }

      单元格索引从 1 开始,因此您必须对 record.getFields() 返回的数组使用 cellIndex-1。

      【讨论】:

      • 如果网格列的顺序不是模型字段定义中的字段,这将不起作用。由于 Extjs 网格本身支持拖动列,因此更改了它们的顺序,即使您最初的列与模型字段的顺序相同,这也不起作用。
      【解决方案3】:

      你可以使用:

      cellclick: function( thisGrid, td, cellIndex, record, tr, rowIndex, e, eOpts )
      {
          console.log('td/cell value: ', td.innerText);
      
      },
      

      【讨论】:

        猜你喜欢
        • 2022-06-17
        • 1970-01-01
        • 2019-12-31
        • 1970-01-01
        • 2014-07-20
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        • 2022-12-03
        相关资源
        最近更新 更多