0

我在网格面板中创建了链接,因此当我单击链接时,它将在选项卡面板中打开另一个选项卡。目前,我使用onClick事件将列单元格输出渲染为 html href 。但是当渲染器方法openrender()调用另一个方法newtab()时似乎出现错误,显示错误函数newtab()找不到。可能是因为onClick事件只能调用“Ext.onReady(function(){”块之外的方法/函数?有谁知道解决方案,非常感谢任何帮助。

或者,如果您有其他方法可以达到相同的目的,也可以随时分享。谢谢。


function newtab(state,ptt,status){
    tabs.add({
        title: 'Order List Detail',
                iconCls: 'tabs',
                items: [
                new Ext.Panel({
                    height: 40,
                    html: 'some html'
                })
                ,layout: 'fit'
        }).show();

}

function openrender(value, p, record){
    return String.format('<a <href="#" onClick="newtab(\'{1}\',\'{2}\',\'{3}\')">{0}</a></b>',value, record.data.state, record.data.ptt, 'Open');
}

var grid = new Ext.grid.GridPanel({
frame:true,
title: 'Pending Orders',
layout: 'fit',
store: catstore,
stripeRows: true,
loadMask: true,
iconCls: 'grid',
tbar: [{
        text: 'Category',
        xtype: 'label'
    }
],
columns: [
{header: "State Name", dataIndex: 'state', sortable: true},
{header: "PTT Name", dataIndex: 'ptt', sortable: true},
{header: "Open", dataIndex: 'openstatus', sortable: true, renderer: openrender}
]
});
4

1 回答 1

0

好吧,我刚刚通过使用网格 cellclick 侦听器找到了另一种解决方法

var grid = new Ext.grid.GridPanel({ frame:true, title: 'Pending Orders', layout: 'fit', store: catstore, stripeRows: true, loadMask: true, iconCls: 'grid', tbar: [{ text: 'Category', xtype: 'label' } ], columns: [ {header: "State Name", dataIndex: 'state', sortable: true}, {header: "PTT Name", dataIndex: 'ptt', sortable: true}, {header: "Open", dataIndex: 'openstatus', sortable: true, renderer: openrender} ], listeners:{ cellclick: function(grid, rowIndex, columnIndex) { // Get the Record for the row var record = grid.getStore().getAt(rowIndex); // Get field name for the column var fieldName = grid.getColumnModel().getDataIndex(columnIndex);

if(fieldName == 'openstatus') newtab(record.data.state, record.data.ptt, 'Open'); } } });

于 2010-11-01T05:59:25.343 回答