This tutorial demonstrates how Scripting Objects can be used to make more robust and better organized forms. Also, I demonstrate how to use check boxes to manipulate data rows in an expanding table.
Here is the code used in the Script Object and Check Boxes:
SO:
function addToTable(component, check_caption, check_uncheck)
{
var rowNum = component._Row1.count;
if (check_uncheck == 1) //check if click was on or off
{ //if on then add the row to the table
if (rowNum == 0)
{
component._Row1.addInstance();
component.Row1.Cell1.rawValue = check_caption;
}
else if (rowNum == 1) //if 1 and no value assign value
{
if (component.Row1.Cell1.rawValue == null) //check for available row
{
component.Row1.Cell1.rawValue = check_caption;
}
else //if 1 and value add row and assign value
{
component.Row1.instanceManager.addInstance();
component.resolveNode(“Row1[1]”).Cell1.rawValue = check_caption;
}
}
else if (rowNum > 1)
{
component.Row1.instanceManager.addInstance(); //count rows – if greater than 1 add row and assign value
component.resolveNode(“Row1[” + rowNum +”]”).Cell1.rawValue = check_caption;
}
}
else //if off then delete the row from the table
{
var rows = component.resolveNodes(“Row1[*]”);
var row = component;
for (var i=0; i<rows.length; i++) //find the correct row
{
var currentRow = rows.item(i);
if (currentRow.Cell1.rawValue == check_caption)
{
component._Row1.removeInstance(i);
}
}
}
}
Check Boxes:
SO.addToTable(this.parent.Table1, this.resolveNode(“caption.value.#text”).value, this.rawValue);