0

次のコードでdataGridにボタンを配置しました

列は;

var avaliableAction = {
header : "Action",
width : 120,
sortable : true,
align : "left",
dataIndex : 'status',
renderer : statusRenderer
};

データグリッドは;

var mainJobsGrid = new Ext.grid.GridPanel({
    store : jobsStore,
    columns : [ avaliableAction ],
    viewConfig : {
            forcefit : true
    },
    title : 'Data Mart Jobs',
    height : 198,
    width : 540,
    frame : true
});

レンダラーは;

function statusRenderer(value, id, r) {
    var START_ICON = '/etlscheduler/resources/images/start-icon.png';
    var STOP_ICON = '/etlscheduler/resources/images/stop-icon.png';
    if (value == "STOPPED") {
        return "<input type='button' class='btnStart' onClick='doStart(); '>";
    } else if (value == "RUNNING" || value == "WAITING") {
        return "<input type='button' class='btnStop' onClick='doStop();'>";
    }
};

function doStop() { ... }
function doStart() { ... }

問題は、ボタンをクリックすると「doStop is not defined」として例外が発生することです

4

2 に答える 2

1

関数を定義する必要があるようです

function doStop() { ... }
于 2011-08-20T12:09:43.250 に答える
0

私は同じ問題に直面しましたが、それはタイプミスではありませんでした! 呼び出された関数の実装は、「Ext.onReady(function(){}」の外にある場合にのみ機能することに気付きました。

誰かが同じ問題に直面している場合は、次のように関数を記述して解決しました。

Ext.the_function = function(){...}

それ以外の :

var the_function = function(){...}

これで問題が解決し、どこに置いても機能します。

于 2013-02-16T14:39:44.060 に答える