1

外部パラメーターをグリッド レンダラー関数に渡す方法はありますか?

たとえば、..

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&ステータス=保留中

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

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

他にもいくつかの方法があります (たとえば、関数excelRendererのコールバックを作成して補助パラメーターにバインドするstatusなど)、これが最も簡単な方法のようです。

編集(バインドされたパラメーターを使用する 2 番目のオプション):

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 }
            ]
        }
    });
}
于 2010-11-29T09:28:45.917 に答える