2010-11-29 5 views
1

Y at-il un moyen de passer le paramètre externe dans la fonction de rendu de grille?ExtJS - en passant le paramètre externe dans le rendu de grille

Par exemple, en considérant ..

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

maintenant je veux ajouter le paramètre externe status dans le moteur de rendu afin que l'URL rendu ressemblera

excel.jsp?view=aging&prod_type=data&value=testing& status = attente

Toute aide est très appréciée. Merci

Répondre

2

Déplacer la définition de la fonction de rendu à l'intérieur du corps de la fonction 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} 
      ] 
     } 
    }); 
} 

Il existe d'autres moyens (par exemple, la création d'un rappel de fonction excelRenderer qui est étant lié à un paramètre supplémentaire status), mais cela semble être le moyen le plus facile.

EDIT (deuxième option à l'aide des paramètres liés):

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

Il fonctionne parfaitement grâce =) – Tsubasa

Questions connexes