2010-11-29 90 views
1

是否有将外部参数传递到网格渲染器函数的方法?ExtJS - 将外部参数传递到网格渲染器

例如,考虑..

function excelRenderer(value, p,record){ 
    return String.format('<a href="excel.jsp?view=aging&prod_type={0}&value={1}" target="_blank"><img src="images/excel.png" border="0"/></a>',record.data.prod_type,value); 
} 

function newtab(status){ 
//add tab 
    tabs.add({ 
    ... 
    items: new Ext.grid.GridPanel({ 
       region:'center', 
       frame: true, 
       title: 'testing', 
       store: new Ext.data.Store({ 
        ... 
       }), 
       columns: [ 
       {header: "Column 2", dataIndex: 'col2', sortable: true, renderer: excelRenderer}, 
       {header: "Column 1", dataIndex: 'col1', sortable: true, renderer: excelRenderer} 
       ] 
      } 
} 

现在我想外部参数status加入到渲染器,这样渲染的URL看起来像

excel.jsp?view=aging&prod_type=data&value=testing&状态=未决

任何帮助非常感谢。由于

回答

2

移动渲染功能定义newTab()函数体内:

function newtab(status){ 
    var excelRenderer = function(value, p,record){ 
     return String.format('<a href="excel.jsp?view=aging&prod_type={0}&value={1}&status={2}" target="_blank"><img src="images/excel.png" border="0"/></a>',record.data.prod_type,value, status); 
    } 

    //add tab 
    tabs.add({ 
     ... 
     items: new Ext.grid.GridPanel({ 
      region:'center', 
      frame: true, 
      title: 'testing', 
      store: new Ext.data.Store({ 
       ... 
      }), 
      columns: [ 
       {header: "Column 2", dataIndex: 'col2', sortable: true, renderer: excelRenderer}, 
       {header: "Column 1", dataIndex: 'col1', sortable: true, renderer: excelRenderer} 
      ] 
     } 
    }); 
} 

还有一些其他的方法(例如创建一个回调函数向被束缚于补充参数statusexcelRenderer),但这似乎是最简单的方法。

EDIT(使用绑定参数第二个选项):

var excelRenderer = function(v, m, r, ri, ci, s, status){ 
    return String.format('<a href="excel.jsp?view=aging&prod_type={0}&value={1}&status={2}" target="_blank"><img src="images/excel.png" border="0"/></a>',r.data.prod_type, v, status); 
} 

function newtab(status){ 
    var statusExcelRenderer = excelRenderer.createDelegate(null, [ status ], true); 

    //add tab 
    tabs.add({ 
     ... 
     items: new Ext.grid.GridPanel({ 
      region:'center', 
      frame: true, 
      title: 'testing', 
      store: new Ext.data.Store({ 
       ... 
      }), 
      columns: [ 
       { header: "Column 2", dataIndex: 'col2', sortable: true, renderer: statusExcelRenderer }, 
       { header: "Column 1", dataIndex: 'col1', sortable: true, renderer: statusExcelRenderer } 
      ] 
     } 
    }); 
} 
+0

它完美感谢=) – Tsubasa 2010-11-30 04:34:53