2014-09-30 212 views
0

在我的项目中有一个aspx网格。我必须用ExtJS5网格来代替它。它具有右键单击的功能。为此,使用了第三方工具。我知道我们可以在ExtJS的上下文菜单中做到这一点,但客户端坚持使用第三方上下文菜单。它的工作原理是这样的:向ExtJS5 Grid Panel添加其他属性

每当网格创建时,属性oncontextmenu =“recordID = 12321”被添加到网格的每一行,其中12321只是一个示例。每行都不相同。

我的要求是将这个非常属性添加到网格的每一行。我们如何在ExtJS5中实现?商店提供“recordID”。要做到这一点

+0

您可以将它添加到您的初始查询中吗?让它为每一行加载服务的值,并将该项目添加到模型中,以便默认情况下将其存储在您的存储中。 – JesseRules 2014-09-30 16:22:00

+0

你是什么意思的每个“行”的“属性”?你在谈论元素吗?其他一些HTML元素?该行的绑定记录本身? – existdissolve 2014-09-30 21:41:27

+0

我在我的商店有记录。它不需要绑定到任何网格列。唯一需要的是当网格呈现它的行像列内容我需要的是HTML应该变成列内容它应该是每个网格行。 RecordID存在于我的模型和商店中。我只是需要它包含在每个网格行中。 – user1640256 2014-10-01 04:48:25

回答

0

IMO最简单的方法是在视图改变rowTpl

grid = Ext.create('Ext.grid.Panel', { 
    [...], 
    viewConfig: { 
     rowTpl: [ 
      '{%', 
       'var dataRowCls = values.recordIndex === -1 ? "" : " ' + Ext.baseCSSPrefix + 'grid-row";', 
      '%}', 
      '<tr oncontextmenu="recordID={[values.record.get(\'field1\')]}" class="{[values.rowClasses.join(" ")]} {[dataRowCls]}" {rowAttr:attributes} {ariaRowAttr}>', 
       '<tpl for="columns">' + 
        '{%', 
         'parent.view.renderCell(values, parent.record, parent.recordIndex, parent.rowIndex, xindex - 1, out, parent)', 
        '%}', 
       '</tpl>', 
      '</tr>' 
     ] 
    } 
}); 

或者,也可以设置在列renderer功能上td任何属性,但你需要做的是为每一列。

工作示例:http://jsfiddle.net/dhw3w81v/1/

+0

谢谢。有效。 – user1640256 2014-10-08 10:44:21

相关问题