2010-11-29 9 views
1

Gibt es eine Möglichkeit, externe Parameter in Grid-Renderer-Funktion übergeben?ExtJS - Übergabe externer Parameter in Grid-Renderer

Zum Beispiel, wenn man bedenkt ..

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} 
       ] 
      } 
} 

jetzt will ich externe Parameter status in den Renderer hinzufügen, so dass die gerenderte URL wie

excel.jsp?view=aging&prod_type=data&value=testing& Status aussehen = anhängig

Jede Hilfe wird sehr geschätzt. Dank

Antwort

2

Bewegen Sie den Renderer Funktionsdefinition in der newTab() Funktion Körper:

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} 
      ] 
     } 
    }); 
} 

Es gibt einige andere Möglichkeiten (zB eine Callback-Funktion zu excelRenderer schaffen, die status auf einen zusätzlichen Parameter gebunden ist wird), aber dies scheint sei der einfachste Weg.

EDIT (zweite Option mit gebundenen Parametern):

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

Es funktioniert perfekt Dank =) – Tsubasa

Verwandte Themen