2010-11-29 60 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