To use the code - create a form with 3 buttons (doesn't matter what connection/table you use for the form).
There are 3 methods below - and they are in order of escalating complexity. Each one "builds" on the one before. So on your FIRST button - attach the FIRST method to the "onAction" event, on the SECOND button the SECOND method, and THIRD button, THIRD method.
IMPORTANT: This example assumes that you have a data connection called "example_data" (standard in the "default" install) - as well as the corresponding tables. If you don't have that connection - then you can just modify the code for your own connection/tables/fields.
ENJOY!
==============
BUTTON 1 CODE
==============
- Code: Select all
function newForm()
{
solutionModel.removeForm('form1')
//make a new form
//creates a brand new form, under the given name, that persists only as long as the client session
var myForm = solutionModel.newForm('form1', 'example_data', 'customers', 'svyWebCrm', false, 800, 600)
//now you can add stuff to the form (under JSForm node)
//add a label
myForm.newLabel('Company', 20, 20, 80, 20)
//add a "normal" text entry field
myForm.newTextField('companyname', 101, 20, 200, 20)
myForm.newLabel('Contact', 20, 42, 80, 20)
//add a "normal" text entry field
myForm.newTextField('contactname', 101, 42, 200, 20)
myForm.newLabel('City bob', 20, 64, 80, 20)
//add a "normal" text entry field
myForm.newTextField('city', 101, 64, 200, 20)
myForm.newLabel('Country', 20, 86, 80, 20)
//add a "normal" text entry field
myForm.newTextField('country', 101, 86, 200, 20)
forms.form1.controller.show()
}
==============
BUTTON 2 CODE
==============
- Code: Select all
function newFormTabpanel()
{
solutionModel.removeForm('form1')
solutionModel.removeForm('form2')
//make a new form
//creates a brand new form, under the given name, that persists only as long as the client session
var myForm = solutionModel.newForm('form1', 'example_data', 'customers', 'svyWebCrm', false, 800, 600)
//now you can add stuff to the form (under JSForm node)
//add a label
myForm.newLabel('Company', 20, 20, 80, 20)
//add a "normal" text entry field
myForm.newTextField('companyname', 101, 20, 200, 20)
myForm.newLabel('Contact', 20, 42, 80, 20)
//add a "normal" text entry field
myForm.newTextField('contactname', 101, 42, 200, 20)
myForm.newLabel('City', 20, 64, 80, 20)
//add a "normal" text entry field
myForm.newTextField('city', 101, 64, 200, 20)
myForm.newLabel('Country', 20, 86, 80, 20)
//add a "normal" text entry field
myForm.newTextField('country', 101, 86, 200, 20)
//new tabpanel
var myPanel = myForm.newTabPanel('orders',20,120,430,200)
//new listview for orders
var myForm2 = solutionModel.newForm('form2', 'example_data', 'orders', 'svyWebCrm', false, 400, 200)
myForm2.view = SM_VIEW.LOCKED_TABLE_VIEW
var myField = myForm2.newTextField('orderid',10,10,100,20)
myField.text = 'Order ID'
myField = myForm2.newTextField('orderdate',10,20,100,20)
myField.text = 'Order Date'
myField = myForm2.newTextField('customerid',10,20,100,20)
myField.text = 'Customer'
myField = myForm2.newTextField('employeeid',10,20,100,20)
myField.text = 'Employee'
//add tab to tabpanel
myPanel.newTab('','Orders',myForm2) //optional last argument = relation
forms.form1.controller.show()
}
==============
BUTTON 3 CODE
==============
- Code: Select all
function newFormTabpanel2tabs()
{
solutionModel.removeForm('form1')
solutionModel.removeForm('form2')
solutionModel.removeForm('form3')
//make a new form
//creates a brand new form, under the given name, that persists only as long as the client session
var myForm = solutionModel.newForm('form1', 'example_data', 'customers', 'svyWebCrm', false, 800, 600)
//now you can add stuff to the form (under JSForm node)
//add a label
myForm.newLabel('Company', 20, 20, 80, 20)
//add a "normal" text entry field
myForm.newTextField('companyname', 101, 20, 200, 20)
myForm.newLabel('Contact', 20, 42, 80, 20)
//add a "normal" text entry field
myForm.newTextField('contactname', 101, 42, 200, 20)
myForm.newLabel('City', 20, 64, 80, 20)
//add a "normal" text entry field
myForm.newTextField('city', 101, 64, 200, 20)
myForm.newLabel('Country', 20, 86, 80, 20)
//add a "normal" text entry field
myForm.newTextField('country', 101, 86, 200, 20)
//new tabpanel
var myPanel = myForm.newTabPanel('orders',20,120,430,200)
myPanel.transparent = true
//new listview for orders
var myForm2 = solutionModel.newForm('form2', 'example_data', 'orders', 'svyWebCrm', false, 400, 200)
myForm2.view = SM_VIEW.LOCKED_TABLE_VIEW
var myField = myForm2.newTextField('orderid',10,10,100,20)
myField.text = 'Order ID'
myField.name = 'orderid'
myField = myForm2.newTextField('orderdate',10,20,100,20)
myField.text = 'Order Date'
myField.name = 'orderdate'
myField = myForm2.newTextField('customerid',10,20,100,20)
myField.text = 'Customer'
myField.name = 'customerid'
myField = myForm2.newTextField('employeeid',10,20,100,20)
myField.text = 'Employee'
myField.name = 'employeeid'
//make a new relation
var myRelation = solutionModel.newRelation( 'cust_to_orders', 'example_data', 'customers', 'example_data', 'orders', SM_JOINTYPE.INNER_JOIN)
myRelation.newRelationItem('customerid', '=', 'customerid')
//make a new valuelist
var myValueList = solutionModel.newValueList('employees', SM_VALUELIST.DATABASE_VALUES)
myValueList.serverName = 'example_data'
myValueList.tableName = 'employees'
myValueList.setDisplayDataProviderIds('firstname', 'lastname')
myValueList.setReturnDataProviderIds('employeeid')
myValueList.separator = ' '
myValueList.sortOptions = 'lastname asc, firstname asc'
//modify the employeeid field on form2 to include the employee name
myField = myForm2.getField('employeeid')
myField.valuelist = solutionModel.getValueList('employees')
myField.editable = false
//new list view - extends the orders listview
var myForm3 = solutionModel.newForm('form3', 'example_data', 'orders', 'svyWebCrm', false, 400, 200)
//separate foundset
myForm3.useSeparateFoundSet = true
//extend it with form2 - makes a "copy"
myForm3.extendsForm = myForm2
//add tab to tabpanel
myPanel.newTab('','Orders - Form 2 - ALL Orders',myForm2) //optional last argument = relation
myPanel.newTab('','Orders - Form 3 - Related Orders',myForm3, 'cust_to_orders') //optional last argument = relation
forms.form1.controller.show()
}