2012-10-18 28 views
1

此應用程序腳本的想法是根據列表框LbxJobTypes中的選定項目填充列表框LbxJobs。谷歌應用程序腳本列表框事件處理,未定義值

我得到一個未定義的e.parameter.LbxJobType值,它似乎阻止了LbxJobs的條件填充。

我測試成功編碼的處理程序(JobTypeValueHandler)由硬(I設置JobType = T300_JOB_TYPE)JobTypeValueHandler功能和LbxJobs列表框填充預期。

檢查e.parameter.source時,確實會得到「LbxJobType」。列表框是在GUI構建器中創建的。

var T200_JOB_TYPE = 1; 
var T300_JOB_TYPE = 2; 

function doGet() { 
    var app = UiApp.createApplication(); 

    app.add(app.loadComponent("BasicCalculator")); 
    var Dischandler = app.createServerHandler('DiscClickHandler'); 
    app.getElementById('chbxDiscl').addValueChangeHandler(Dischandler);  
    return app; 
} 


function DiscClickHandler(e) { 
    var app = UiApp.getActiveApplication(); 
    var Discpanel = app.getElementById('FLpnlDisc'); 

    BCalcSetup(app); 
    Discpanel.setVisible(false); 
    return app; 
} 


function BasicClickHandler(e) { 
    var app = UiApp.getActiveApplication(); 

    return app; 
} 


function BCalcSetup(app){ 
    var BCalcpanel = app.getElementById('APnlBCalc'); 
    var lbxJobType = app.getElementById('LbxJobType'); 
    var JobTpyehandler = app.createServerChangeHandler('JobTypeValueHandler'); 
    var lbxJobs = app.getElementById('LbxJobs'); 

    JobTpyehandler.addCallbackElement(lbxJobType); 
    lbxJobType.addChangeHandler(JobTpyehandler); 
    lbxJobType.addItem('Title 200'); 
    lbxJobType.addItem('Title 300'); 
    loadClassifications(lbxJobs,T200_JOB_TYPE); 
    BCalcpanel.setVisible(true); 
} 


function JobTypeValueHandler(e) { 
    var app = UiApp.getActiveApplication(); 
    var JobType=T200_JOB_TYPE; 
    var lboxJobs=app.getElementById('LbxJobs'); 

    if (e.parameter.LbxJobType=='Title 300'){JobType=T300_JOB_TYPE;} 
    loadClassifications(lboxJobs,JobType); 
    app.close(); 
    return app; 
} 


function loadClassifications(lbox,JobType){ 
    var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID); 

    lbox.clear(); 
    if (JobType==T300_JOB_TYPE){ 
    var T3data =spreadsheet.getRangeByName('Title300Jobs').getValues(); 
    for (var row1 = 1; row1 < T3data.length; row1++) { 
     lbox.addItem(T3data[row1]); 
    } 
    }else{ 
    var T2data =spreadsheet.getRangeByName('Title200Jobs').getValues(); 
    for (var row2 = 1; row2 < T2data.length; row2++) { 
     lbox.addItem(T2data[row2]); 
    } 
    } 
} 
+0

究竟是什麼問題? – Danpe

+0

我覺得有點傻,但我明白了這一點。 我遇到的問題是當我在GUI構建器中創建接口時,我沒有填寫這些列表框的Name屬性。 我回到了GUI構建器,並填寫每個框的名稱屬性,現在它就像一個冠軍。 現場學習 – Slogo

回答

0

我覺得有點傻,但我明白了這一點。我遇到的問題是當我在GUI構建器中創建接口時,我沒有填寫這些列表框的Name屬性。我回到了GUI構建器,並填寫每個框的名稱屬性,現在它就像一個冠軍。生活和學習