2013-08-03 2 views
0

웹 페이지를 사용하여 데이터를 단계별로 수집하고 싶습니다. 사용자가 다음을 클릭하면 현재 패널이 앱에서 제거되고 새로운 패널이 추가되고 문제가 발생합니다.Google Apps 스크립트 패널 제거

여기 내 현재 코드 :

function doGet() { 
//Create Application 
var app = UiApp.createApplication(); 
//Set Application Title 
app.setTitle("New Lead Form"); 

/////////////////////////////////Step 1///////////////////////////////////    

// Create a Panel for Step 1 Data 


var nextbuttonstep1 = app.createButton("Next"); 

// Create the entry form, a 6 x 2 grid with text boxes for First Name, Last Name, Phone  Number, Email, & Property State that is then added to a vertical panel 
var grid = app.createGrid(5, 2); 
var propertystate = app.createListBox().setName('propertystate').setId('propertystate') 
        propertystate.addItem('AL'); 
        propertystate.addItem('FL'); 
        propertystate.addItem('IN'); 
        propertystate.addItem('KY'); 

grid.setWidget(0, 0, app.createLabel('First Name:')); 
grid.setWidget(0, 1, app.createTextBox().setName('firstname').setId('firstname')); 
grid.setWidget(1, 0, app.createLabel('Last Name:')); 
grid.setWidget(1, 1, app.createTextBox().setName('lastname').setId('lastname')); 
grid.setWidget(2, 0, app.createLabel('Phone Number:')); 
grid.setWidget(2, 1, app.createTextBox().setName('phonenumber').setId('phonenumber')); 
grid.setWidget(3, 0, app.createLabel('Email Address:')); 
grid.setWidget(3, 1, app.createTextBox().setName('emailaddress').setId('emailaddress')); 
grid.setWidget(4, 0, app.createLabel('Property State:')); 
grid.setWidget(4, 1, propertystate); 

// Create a vertical panel and add the grid to the panel 
var step1panel = app.createFlowPanel(); 
step1panel.add(grid); 
step1panel.add(nextbuttonstep1); 
app.add(step1panel) 
var handler = app.createServerHandler('proceedtostep2'); 
handler.addCallbackElement(step1panel) 
nextbuttonstep1.addClickHandler(handler); 


return app; 
} 

function proceedtostep2(eventInfo) { 

var parameter = eventInfo.parameter; 
var panel =parameter.step1panel; 
var app = UiApp.getActiveApplication(); 

app.remove(panel); 

return app; 
} 
+0

/어디서 표시 하시겠습니까? 그리드를 그대로두고 각 textBox를 단순히 업데이트하지 않는 이유는 무엇입니까? –

답변

3

패널 매개 변수로 표시되지 않습니다 만 입력 필드는 않습니다.

... 
// Create a vertical panel and add the grid to the panel 
var step1panel = app.createFlowPanel().setId('someUniqueIdString'); 
... 

... 
function proceedtostep2(eventInfo) { 
    var app = UiApp.getActiveApplication(); 
    app.remove(app.getElementById('someUniqueIdString')); 
    return app; 
} 

그러나 응용 프로그램 창에서 모든 요소를 ​​제거하는 닫히지 않습니다 창 : 당신은 당신이 그것을 사용하여 제거 할 패널을 검색해야합니다 ID입니다. 창은 추악한 상태로 남아 있습니다. 제거한 후에 다른 위젯을 추가해도 괜찮지 만 새로운 ID를 사용해야합니다. 새로운 위젯과 함께 오래된 ID 문자열을 사용하면 나쁜 일이 일어납니다.

+0

완벽한 작업을 해 주셔서 감사합니다. – user2649292

+0

답변으로 문제가 해결되면 "대답 수락"기능을 사용하십시오. 대답 앞에 녹색 체크 표시가 있습니다. – Taras