So I have an app script gadget embedded in a google site. What the app script does is get objects from scriptdb and display it on the screen. There also is an add button clicking on which you get a form to enter information and add objects. What I am trying to do is that after an object is saved, I repopulate the object and display them so the newly created object can be seen without manually refreshing the page.
I have a function called update() that is called after an object is saved and this function takes care of the "auto refresh".
In the save() function, I call the update function with this syntax, update(). Here is the submit() function
function SaveAssignment(e){ var db = ScriptDb.getMyDb(); var app = UiApp.getActiveApplication(); var name = e.parameter.assignmentname; var date = e.parameter.assignmentdate.toString(); var desc = e.parameter.assignmentdesc; var category = e.parameter.assignmentcategory; var totalscore = e.parameter.assignmenttotalscore; var site = SitesApp.getActiveSite(); var assignment = { name: name, date: date, description: desc, url: pageUrl + '?name='+name+'&date='+date+'&description='+desc+'&id='+sheetId, sheetid: sheetId, totalScore: totalscore, Category: category }; db.save(assignment); update(); } and here is my update() method
function update(){ var app = UiApp.createApplication(); var oldGrid = app.getElementById('grid'); app.remove(oldGrid); var handler = app.createServerHandler('AddAssignment'); var addAssignmentButton = app.createButton('Add Assignment', handler); var assignments = db.query({}); var i = 1; var j = 1; var grid; if(assignments.getSize() < 1){ grid = app.createGrid(3, 5).setId('grid'); } else{ grid = app.createGrid(assignments.getSize() + assignments.getSize() + assignments.getSize(), 5).setId('grid'); } handler.addCallbackElement(grid); grid.setWidget(0, 2, addAssignmentButton); while(assignments.hasNext()){ var assignment = assignments.next(); var name = assignment.name; var date = assignment.date; var description = assignment.description; var nameLabel = app.createLabel('Assignment ' + i + ' : ' + name).setVisible(true); var dateLabel = app.createLabel('Date: ' + date).setVisible(true); var idLabel = app.createLabel(assignment.getId()).setVisible(false); var deletebutton = app.createButton('Delete Assignment'); var handler = app.createServerHandler('deleteAssignment'); handler.addCallbackElement(idLabel); deletebutton.addClickHandler(handler); grid.setWidget(j, 0, nameLabel); j = j + 1; grid.setWidget(j, 0, dateLabel); grid.setWidget(j, 1, deletebutton); grid.setWidget(j, 3, idLabel); i++; j = j + 2; } app.add(grid); return app;