2014-09-23 86 views
0

我有一个在每一行内都有一个子表的gridpanel。我试图包括一个双击功能(如果你连续点击2次,获得id_amenaza和URL重定向)。代码的作品,但如果我让双击折叠行。我如何添加此功能? (或插入作为链接的图像?)extjs表内的动态url不工作

//GRIDPANEL 
Ext.create('Ext.grid.Panel', { 
    renderTo: 'example-grid', 
    store: amenazaStore, 
    width: 748, 
    height: 598, 
    title: '<bean:write name="informesAGRForm" property="nombreActivo"/>', 
    plugins: [{ 
     ptype: "subtable", 
     headerWidth: 24, 
     listeners: { 
      'rowdblclick': function(grid, rowIndex, columnIndex, e){ 
       // Get the Record, this is the point at which rowIndex references a 
       // record's index in the grid's store. 
       var record = grid.getStore().getAt(rowIndex); 

       // Get field name 
       var fieldName = grid.getColumnModel().getDataIndex(columnIndex); 
       var data = record.get(fieldName); 
       alert(data); 
      } 
     }, 
      columns: [{ 
      text: 'id_amenaza', 
      dataIndex: 'id_amenaza', 
      hidden: true, 
      width: 100 
     }, { 
      width: 100, 
      text: 'id_salvaguarda', 
      dataIndex: 'id_salvaguarda' 
     }, 
     { 
      text: 'denominacion', 
      dataIndex: 'denominacion', 
      width: 100 
     },{ 
      text: 'descripcion', 
      dataIndex: 'descripcion', 
      width: 100 
     },{ 
      text: 'eficacia', 
      dataIndex: 'eficacia', 
      width: 100 
     }, 
     ], 
     getAssociatedRecords: function (record) { 
      var result = Ext.Array.filter(
      salvaguardaStore.data.items, 

      function (r) { 
       return r.get('id_amenaza') == record.get('id'); 
      }); 
      return result; 
     } 
    }], 
    collapsible: false, 
    animCollapse: false, 
    columns: [ 
     { 
      text: 'ID', 
      hidden: true, 
      hideable: false, 
      dataIndex: 'id' 
     }, 
     { 
      text: 'Codigo', 
      width: 50, 
      sortable: true, 
      hideable: false, 
      dataIndex: 'codigo' 
     },   
     { 
      text: 'Denominación', 
      width: 150, 
      dataIndex: 'denominacion', 
     }, 
     { 
      text: ' Autenticidad', 
      flex: 1, 
      dataIndex: 'a_riesgo' 
     }, 
     { 
      text: 'Confidencialidad', 
      flex: 1, 
      dataIndex: 'c_riesgo' 
     }, 
     { 
      text: 'Integridad', 
      flex: 1, 
      dataIndex: 'i_riesgo' 
     }, 
     { 
      text: 'Disponibilidad', 
      flex: 1, 
      dataIndex: 'd_riesgo' 
     }, 
     { 
      text: 'Trazabilidad', 
      flex: 1, 
      dataIndex: 't_riesgo' 
     }, 
     { 
      text: 'Total', 
      flex: 1, 
      dataIndex: 'total_riesgo' 
     }] 
    }); 
} 

在此先感谢您。

回答

2

首先,您必须将rowdblclick附加到主电网。要检测哪个子表行被点击,您必须使用事件对象。

实施例:

'rowdblclick': function (view, record, tr, columnIndex, e) { 
    var cell = e.getTarget('.x-grid-subtable-cell'); 
    if (!cell) { 
     return; 
    } 
    var row = Ext.get(cell).up('tr'); 
    var tbody = row.up('tbody'); 
    var rowIdx = tbody.query('tr', true).indexOf(row.dom); 

    var records = view.up('grid').getPlugin('subtable').getAssociatedRecords(record); 

    var subRecord = records[rowIdx]; 
    console.log(subRecord); 
} 

要关闭展开/折叠设置插件expandOnDblClick: false

工作样品:http://jsfiddle.net/7czs02yz/18/

+0

谢谢,但我还有一个问题。当我使用'alert(subRecord);'我得到'[object Object]'作为消息。我如何获得'id_salvaguarda'值? – 2014-09-24 09:13:49

+0

使用'get'方法:'record.get('id_salvaguarda')'或'record.data'对象:'record.data.id_salvaguarda' – Krzysztof 2014-09-24 10:55:42

+0

这两种方法都不工作(我绝对使用javascript)。也许问题是适当的表/行?在Firefox开发人员模式下显示这个' 16

' – 2014-09-24 11:23:20