Child pages
  • JSFoundSet

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}A JSFoundset is a scriptable object, it contains record objects defined by its SQL. It does lazy load the PKs and records.
Each foundset has its own record set and selected index{sub-section}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Property Summary{th}{tr}{tbody}{tr}{td}[Boolean]{td}{td}[#multiSelect]
Get or set the multiSelect flag of the foundset.{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummary}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summary{th}{tr}{tbody}{tr}{td}[Boolean]{td}{td}[#addFoundSetFilterParam]\(dataprovider, operator, value)
Add a filter parameter that is permanent per user session to limit a specified foundset of records.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#addFoundSetFilterParam]\(dataprovider, operator, value, name)
Add a filter parameter that is permanent per user session to limit a specified foundset of records.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#clear]\()
Clear the foundset.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#deleteAllRecords]\()
Delete all records in foundset, resulting in empty foundset.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#deleteRecord]\(\[index/record\])
Delete current/parametercurrently recordselected or the record under the given indexrecord(s).{td}{tr}{tbody}{tbody}{tr}{td}[JSFoundsetBoolean]{td}{td}[#duplicateFoundSet#deleteRecord]\(record)
GetDelete arecord duplicate offrom the foundset.{td}{tr}{tbody}{tbody}{tr}{td}[NumberBoolean]{td}{td}[#duplicateRecord#deleteRecord]\(\[index\], \[location\], \[changeSelection\])
Duplicate currentDelete record orwith recordthe atgiven index in the foundset.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanJSFoundSet]{td}{td}[#find#duplicateFoundSet]\()
SetGet thea foundsetduplicate inof findthe modefoundset.{td}{tr}{tbody}{tbody}{tr}{td}[StringNumber]{td}{td}[#getCurrentSort#duplicateRecord]\()
Get the current sort columnsDuplicate current record, change selection to new record, place on top.{td}{tr}{tbody}{tbody}{tr}{td}[ObjectNumber]{td}{td}[#getDataProviderValue#duplicateRecord]\(dataProviderIDonTop)
GetDuplicate aselected valuerecord, basedchange onselection ato dataprovidernew namerecord.{td}{tr}{tbody}{tbody}{tr}{td}[StringNumber]{td}{td}[#getDataSource#duplicateRecord]\(onTop, changeSelection)
GetDuplicate theselected datasource usedrecord.{td}{tr}{tbody}{tbody}{tr}{td}[Object]\[]\[]Number]{td}{td}[#getFoundSetFilterParams#duplicateRecord]\(index)
Get
Duplicate record at index in the list of previously defined foundset filtersfoundset, change selection to new record, place on top.{td}{tr}{tbody}{tbody}{tr}{td}[Object]\[]\[Number]{td}{td}[#getFoundSetFilterParams#duplicateRecord]\(filterNameindex, onTop)
GetDuplicate arecord previouslyat definedindex foundsetin filterthe foundset, change usingselection itsto givennew namerecord.{td}{tr}{tbody}{tbody}{tr}{td}[JSRecordNumber]{td}{td}[#getRecord#duplicateRecord]\(index, onTop, changeSelection)
GetDuplicate therecord recordat objectindex atin the indexfoundset.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#getRecordIndex#duplicateRecord]\(record)
Get the record indexindex, location)
Duplicate record at index in the foundset, change selection to new record.{td}{tr}{tbody}{tbody}{tr}{td}[StringNumber]{td}{td}[#getRelationName#duplicateRecord]\()index, Getslocation, thechangeSelection)
relationDuplicate namerecord (nullat ifindex notin a relatedthe foundset).{td}{tr}{tbody}{tbody}{tr}{td}[NumberBoolean]{td}{td}[#getSelectedIndex#find]\()
GetSet the currentfoundset recordin index of the foundsetfind mode.{td}{tr}{tbody}{tbody}{tr}{td}[NumberString]\[]{td}{td}[#getSelectedIndexes#getCurrentSort]\()
Get the selectedcurrent recordssort indexescolumns.{td}{tr}{tbody}{tbody}{tr}{td}[JSRecordObject]{td}{td}[#getSelectedRecord#getDataProviderValue]\(dataProviderID)
Get the selected recorda value based on a dataprovider name.{td}{tr}{tbody}{tbody}{tr}{td}[JSRecord]\[String]{td}{td}[#getSelectedRecords#getDataSource]\()
Get the selecteddatasource recordsused.{td}{tr}{tbody}{tbody}{tr}{td}[NumberObject]\[]\[]{td}{td}[#getSize#getFoundSetFilterParams]\()
Get the numberlist of recordspreviously indefined thisfoundset foundsetfilters.{td}{tr}{tbody}{tbody}{tr}{td}void[Object]\[]\[]{td}{td}[#invertRecords#getFoundSetFilterParams]\(filterName)
InvertGet thea foundsetpreviously againstdefined allfoundset rowsfilter, ofusing theits currentgiven tablename.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanQBSelect]{td}{td}[#isInFind#getQuery]\()
Get the Checkquery ifthat thisthe foundset is incurrently find modeusing.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanJSRecord]{td}{td}[#loadAllRecords#getRecord]\(index)
LoadsGet allthe accessiblerecord recordsobject fromat the datasource into the foundsetindex.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanNumber]{td}{td}[#loadOmittedRecords#getRecordIndex]\(record)
LoadsGet the records that are currently omitted as a foundsetrecord index.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanString]{td}{td}[#loadRecords#getRelationName]\(\[input\], \[queryArgumentsArray\])
Load records with primary key (dataset/number/uuid) or query)
Gets the relation name (null if not a related foundset).{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#newRecord#getSelectedIndex]\(\[location\], \[changeSelection\])
CreateGet athe newcurrent record index inof the foundset.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanNumber]\[]{td}{td}[#omitRecord#getSelectedIndexes]\(\[index\])
Omit current record or Get the recordselected under the given index, to be shown with loadOmittedRecordsrecords indexes.{td}{tr}{tbody}{tbody}{tr}{td}void[JSRecord]{td}{td}[#relookup#getSelectedRecord]\(\[index\])
Perform a relookup for Get the current record or the record under the given index
Lookups are defined in the dataprovider (columns) auto\-enter setting and are normally performed over a relation upon record creationselected record.{td}{tr}{tbody}{tbody}{tr}{td}[BooleanJSRecord]\[]{td}{td}[#removeFoundSetFilterParam#getSelectedRecords]\(name)
RemoveGet athe namedselected foundset filterrecords.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#search#getSize]\(\[clearLastResults\], \[reduceSearch\])
StartGet the database search and use the results, returns the number of records, makein sure you did "find" function firstthis foundset.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#selectRecord#hasConditions]\(pkid1, \[pkid2\], \[pkidn\])
Select the record based on pk data)
Check wether the foundset has any conditions from a previous find action.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setDataProviderValue#invertRecords]\(dataProviderID, value)
Set a value based on a dataprovider name)
Invert the foundset against all rows of the current table.{td}{tr}{tbody}{tbody}{tr}{td}void[Boolean]{td}{td}[#setSelectedIndex#isInFind]\(index)
Set the current record index
Check if this foundset is in find mode.{td}{tr}{tbody}{tbody}{tr}{td}void[Boolean]{td}{td}[#setSelectedIndexes#loadAllRecords]\(indexes)
Set)
Loads all accessible records from the selecteddatasource into recordsthe indexesfoundset.{td}{tr}{tbody}{tbody}{tr}{td}void[Boolean]{td}{td}[#sort#loadOmittedRecords]\(sortString/recordComparator, \[defer\])
SortsLoads the foundsetrecords basedthat onare thecurrently givenomitted sortas string or record comparator functiona foundset.{td}{tr}{tbody}{tbody}{tr}{td}[JSFoundsetBoolean]{td}{td}[#unrelate#loadRecords]\()
CreateLoad arecords newwith unrelatedprimary foundset that is a copy of the current foundsetkey (dataset/number/uuid) or query.{td}{tr}{tbody}{tabletbody}\\ 

{table:id=property|class=servoy sDetail{tr}{colgrouptd}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=multiSelect|class=node}{tr:id=name}{td}h6.multiSelect{td}{tr}{tr:id=des}{td}{sub-section:multiSelect_des|text=|trigger=button}{sub-section}{sub-section:multiSelect_des|trigger=none|class=sIndent}Get or set the multiSelect flag of the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:multiSelect_snc|text=|trigger=button}{sub-section}{sub-section:multiSelect_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:multiSelect_prs|text=|trigger=button}{sub-section}{sub-section:multiSelect_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:multiSelect_ret|text=|trigger=button}{sub-section}{sub-section:multiSelect_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:multiSelect_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:multiSelect_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:multiSelect_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:multiSelect_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:multiSelect_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:multiSelect_sam|trigger=none}{code:language=javascript}
// allow user to select multiple rows.
forms.customer.foundset.multiSelect = true;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}[Boolean]{td}{td}[#loadRecords]\(foundset)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#loadRecords]\(dataset)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#loadRecords]\(querybuilder)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#loadRecords]\(uuidpk)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#loadRecords]\(numberpk)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#loadRecords]\(queryString)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#loadRecords]\(queryString, argumentsArray)
Load records with primary key (dataset/number/uuid) or query.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#newRecord]\()
Create a new record on top of the foundset and change selection to it.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#newRecord]\(onTop)
Create a new record in the foundset and change selection to it.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#newRecord]\(onTop, changeSelection)
Create a new record in the foundset.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#newRecord]\(index)
Create a new record in the foundset and change selection to it.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#newRecord]\(index, changeSelection)
Create a new record in the foundset.{td}{tr}{tbody}{tabletbody}\\ 

{table:id=function|class=servoy sDetail{tr}{colgrouptd}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=addFoundSetFilterParam-String_String_Object|class=node}{tr:id=name}{td}h6.addFoundSetFilterParam[Boolean]{td}{td}[#omitRecord]\()
Omit current record, to be shown with loadOmittedRecords.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#omitRecord]\(index)
Omit record under the given index, to be shown with loadOmittedRecords.{td}{tr}{tr:id=sig}tbody}{tbody}{tr}{td}void{td}{span:style=float: left; margin-right: 5px;td}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}addFoundSetFilterParam{span}{span:id=iets|style=float: left;}\(dataprovider, operator, value){span}{td}{tr}{tr:id=des}{td}{sub-section:addFoundSetFilterParam-String_String_Object_des|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_des|trigger=none|class=sIndent}Add a filter parameter that is permanent per user session to limit a specified foundset of records.
Use clear() or loadAllRecords() to make the filter effective.
Multiple filters can be added to the same dataprovider, they will all be applied.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:addFoundSetFilterParam-String_String_Object_snc|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:addFoundSetFilterParam-String_String_Object_prs|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_prs|trigger=none|class=sIndent}\{[String]} dataprovider -- String column to filter on.
\{[String]} operator -- String operator: =, <, >, >=, <=, !=, (NOT) LIKE, (NOT) IN, (NOT) BETWEEN and IS (NOT) NULL
\{[Object]} value -- Object filter value (for in array and between an array with 2 elements)
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:addFoundSetFilterParam-String_String_Object_ret|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_ret|trigger=none|class=sIndent}[Boolean] -- true if adding the filter succeeded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:addFoundSetFilterParam-String_String_Object_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:addFoundSetFilterParam-String_String_Object_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:addFoundSetFilterParam-String_String_Object_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_sam|trigger=none}{code:language=javascript}
// Filter a fondset on a dataprovider value.
// Note that multiple filters can be added to the same dataprovider, they will all be applied.

var success = forms.customer.foundset.addFoundSetFilterParam('customerid', '=', 'BLONP', 'custFilter');//possible to add multiple
forms.customer.foundset.loadAllRecords();//to make param(s) effective
// Named filters can be removed using forms.customer.foundset.removeFoundSetFilterParam(filterName)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=addFoundSetFilterParam-String_String_Object_String#relookup]\()
Perform a relookup for the current records
Lookups are defined in the dataprovider (columns) auto\-enter setting and are normally performed over a relation upon record creation.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#relookup]\(index)
Perform a relookup for the record under the given index
Lookups are defined in the dataprovider (columns) auto\-enter setting and are normally performed over a relation upon record creation.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#removeFoundSetFilterParam]\(name)
Remove a named foundset filter.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#search]\()
Start the database search and use the results, returns the number of records, make sure you did "find" function first.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#search]\(clearLastResults)
Start the database search and use the results, returns the number of records, make sure you did "find" function first.{td}{tr}{tbody}{tbody}{tr}{td}[Number]{td}{td}[#search]\(clearLastResults, reduceSearch)
Start the database search and use the results, returns the number of records, make sure you did "find" function first.{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#selectRecord]\(pkid1, \[pkid2\], \[pkidn\])
Select the record based on pk data.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setDataProviderValue]\(dataProviderID, value)
Set a value based on a dataprovider name.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setSelectedIndex]\(index)
Set the current record index.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#setSelectedIndexes]\(indexes)
Set the selected records indexes.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#sort]\(sortString)
Sorts the foundset based on the given sort string.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#sort]\(sortString, defer)
Sorts the foundset based on the given sort string.{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#sort]\(comparator)
Sorts the foundset based on the given record comparator function.{td}{tr}{tbody}{tbody}{tr}{td}[JSFoundSet]{td}{td}[#unrelate]\()
Create a new unrelated foundset that is a copy of the current foundset.{td}{tr}{tbody}{table}\\ 

{table:id=property|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Property Details{th}{tr}{tbody:id=multiSelect|class=node}{tr:id=name}{td}h6.addFoundSetFilterParammultiSelect{td}{tr}{tr:id=sigdes}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}addFoundSetFilterParam{span}{span:id=iets|style=float: left;}\(dataprovider, operator, value, name){span}{td}{tr}{tr:id=des}{td}{sub-section:addFoundSetFilterParam-String_String_Object_Stringsub-section:multiSelect_des|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_des|trigger=none|class=sIndent}AddGet aor filterset parameterthe that is permanent per user session to limit a specified foundset of records.
Use clear() or loadAllRecords() to make the filter effective.
The filter is removed again using removeFoundSetFilterParam(name).multiSelect flag of the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_snc|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_StringmultiSelect_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_prs|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_prs|trigger=none|class=sIndent}\{[String]} dataprovider -- String column to filter on.
\{[String]} operator -- String operator: =, <, >, >=, <=, !=, (NOT) LIKE, (NOT) IN, (NOT) BETWEEN and IS (NOT) NULL optionally augmented with modifiers "#" (ignore case) or "||=" (or\-is\-null).
\{[Object]} value -- Object filter value (for in array and between an array with 2 elements)
\{[String]} name -- String name, used to remove the filter again.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_ret|text=|trigger=button}{sub-section}{sub-section:addFoundSetFilterParam-String_String_Object_String_ret|triggermultiSelect_ret|trigger=none|class=sIndent}[Boolean] -- true if adding the filter succeeded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:addFoundSetFilterParam-String_String_Object_StringmultiSelect_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:addFoundSetFilterParam-String_String_Object_String_multiSelect_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_StringmultiSelect_sam|trigger=none}{code:language=javascript}
var// successallow = forms.customer.foundset.addFoundSetFilterParam('customerid', '=', 'BLONP', 'custFilter');//possible to add multiple
// Named filters can be removed usinguser to select multiple rows.
forms.customer.foundset.removeFoundSetFilterParam(filterName)multiSelect = // you can use modifiers in the operator as well, filter on companies where companyname is null or equals-ignore-case 'servoy'
var ok = forms.customer.foundset.addFoundSetFilterParam('companyname', '#^||=', 'servoy')

forms.customer.foundset.loadAllRecords();//to make param(s) effective
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=cleartrue;
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=addFoundSetFilterParam-String_String_Object|class=node}{tr:id=name}{td}h6.clearaddFoundSetFilterParam{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}clearaddFoundSetFilterParam{span}{span:id=iets|style=float: left;}\(dataprovider, operator, value){span}{td}{tr}{tr:id=des}{td}{sub-section:clearaddFoundSetFilterParam-String_String_Object_des|text=|trigger=button}{sub-section}{sub-section:clearaddFoundSetFilterParam-String_String_Object_des|trigger=none|class=sIndent}Clear the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{trAdd a filter parameter that is permanent per user session to limit a specified foundset of records.
Use clear() or loadAllRecords() to make the filter effective.
Multiple filters can be added to the same dataprovider, they will all be applied.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:clearaddFoundSetFilterParam-String_String_Object_snc|text=|trigger=button}{sub-section}{sub-section:clearaddFoundSetFilterParam-String_String_Object_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:clearaddFoundSetFilterParam-String_String_Object_prs|text=|trigger=button}{sub-section}{sub-section:clearaddFoundSetFilterParam-String_String_Object_prs|trigger=none|class=sIndent}\{[String]} dataprovider -- String column to filter on.
\{[String]} operator -- String operator: =, <, >, >=, <=, !=, (NOT) LIKE, (NOT) IN, (NOT) BETWEEN and IS (NOT) NULL
\{[Object]} value -- Object filter value (for in array and between an array with 2 elements)
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:clearaddFoundSetFilterParam-String_String_Object_ret|text=|trigger=button}{sub-section}{sub-section:clearaddFoundSetFilterParam-String_String_Object_ret|trigger=none|class=sIndent}void[Boolean] -- true if adding the filter succeeded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:clearaddFoundSetFilterParam-String_String_Object_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:clearaddFoundSetFilterParam-String_String_Object_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:clearaddFoundSetFilterParam-String_String_Object_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:clearaddFoundSetFilterParam-String_String_Object_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:clearaddFoundSetFilterParam-String_String_Object_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:clearaddFoundSetFilterParam-String_String_Object_sam|trigger=none}{code:language=javascript}
//Clear the foundset, including searches that may be on it Filter a fondset on a dataprovider value.
// Note that multiple filters can be added to the same dataprovider, they will all be applied.

var success = forms.customer.foundset.addFoundSetFilterParam('customerid', '=', 'BLONP', 'custFilter');//possible to add multiple
forms.customer.foundset.loadAllRecords();//to make param(s) effective
// Named filters can be removed using forms.customer.foundset.clearremoveFoundSetFilterParam(filterName);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String|class=node}{tr:id=name}{td}h6.deleteAllRecordsaddFoundSetFilterParam{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}deleteAllRecordsaddFoundSetFilterParam{span}{span:id=iets|style=float: left;}\(dataprovider, operator, value, name){span}{td}{tr}{tr:id=des}{td}{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_des|text=|trigger=button}{sub-section}{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_des|trigger=none|class=sIndent}Delete all records in foundset, resulting in empty foundsetAdd a filter parameter that is permanent per user session to limit a specified foundset of records.
Use clear() or loadAllRecords() to make the filter effective.
The filter is removed again using removeFoundSetFilterParam(name).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_snc|text=|trigger=button}{sub-section}{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_prs|text=|trigger=button}{sub-section}{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:deleteAllRecords_ret|text=|trigger=button}{sub-section}{sub-section:deleteAllRecords_ret|trigger=none|class=sIndent}[Boolean][String]} dataprovider -- boolean true if all records could be deleted.String column to filter on.
\{[String]} operator -- String operator: =, <, >, >=, <=, !=, (NOT) LIKE, (NOT) IN, (NOT) BETWEEN and IS (NOT) NULL optionally augmented with modifiers "#" (ignore case) or "||=" (or\-is\-null).
\{[Object]} value -- Object filter value (for in array and between an array with 2 elements)
\{[String]} name -- String name, used to remove the filter again.
{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=seeret}{td}*Also seeReturns*\\{sub-section:deleteAllRecords_seeaddFoundSetFilterParam-String_String_Object_String_ret|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteAllRecords_see|trigger=none}addFoundSetFilterParam-String_String_Object_String_ret|trigger=none|class=sIndent}[Boolean] -- true if adding the filter succeeded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:addFoundSetFilterParam-String_String_Object_String_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:addFoundSetFilterParam-String_String_Object_String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteAllRecordsaddFoundSetFilterParam-String_String_Object_String_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.deleteAllRecords();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{addFoundSetFilterParam('customerid', '=', 'BLONP', 'custFilter');//possible to add multiple
// Named filters can be removed using forms.customer.foundset.removeFoundSetFilterParam(filterName)

// you can use modifiers in the operator as well, filter on companies where companyname is null or equals-ignore-case 'servoy'
var ok = forms.customer.foundset.addFoundSetFilterParam('companyname', '#^||=', 'servoy')

forms.customer.foundset.loadAllRecords();//to make param(s) effective
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=deleteRecordclear|class=node}{tr:id=name}{td}h6.deleteRecordclear{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]void{span}{span:id=iets|style=float: left; font-weight: bold;}deleteRecordclear{span}{span:id=iets|style=float: left;}\(\[index/record\]){span}{td}{tr}{tr:id=des}{td}{sub-section:deleteRecordclear_des|text=|trigger=button}{sub-section}{sub-section:deleteRecordclear_des|trigger=none|class=sIndent}Delete current/parameter record or the record under the given index.
If the foundset is in multiselect mode, all selected records are deleted (when no parameter is used)Clear the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteRecordclear_snc|text=|trigger=button}{sub-section}{sub-section:deleteRecordclear_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteRecordclear_prs|text=|trigger=button}{sub-section}{sub-section:deleteRecordclear_prs|trigger=none|class=sIndent}\[index/record\] -- index of record to delete or record itself.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:deleteRecordclear_ret|text=|trigger=button}{sub-section}{sub-section:deleteRecordclear_ret|trigger=none|class=sIndent}[Boolean] -- boolean true if all records could be deleted.void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:deleteRecordclear_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecordclear_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteRecordclear_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecordclear_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteRecordclear_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecordclear_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.deleteRecord();
//canClear return false incase of related foundset having records and orphans records are not allowed by the relation
the foundset, including searches that may be on it
forms.customer.foundset.clear();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=duplicateFoundSetdeleteAllRecords|class=node}{tr:id=name}{td}h6.duplicateFoundSetdeleteAllRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSFoundsetBoolean]{span}{span:id=iets|style=float: left; font-weight: bold;}duplicateFoundSetdeleteAllRecords{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:duplicateFoundSetdeleteAllRecords_des|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSetdeleteAllRecords_des|trigger=none|class=sIndent}Get a duplicate of theDelete all records in foundset, resulting in empty foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:duplicateFoundSetdeleteAllRecords_snc|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSetdeleteAllRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:duplicateFoundSetdeleteAllRecords_prs|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSetdeleteAllRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:duplicateFoundSetdeleteAllRecords_ret|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSetdeleteAllRecords_ret|trigger=none|class=sIndent}[JSFoundsetBoolean] -- foundset duplicate boolean true if all records could be deleted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:duplicateFoundSetdeleteAllRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateFoundSetdeleteAllRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:duplicateFoundSetdeleteAllRecords_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateFoundSetdeleteAllRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:duplicateFoundSetdeleteAllRecords_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateFoundSetdeleteAllRecords_sam|trigger=none}{code:language=javascript}
var dupFoundsetsuccess = forms.customer.foundset.duplicateFoundSetdeleteAllRecords();
forms.customer.foundset.find();
//search some fields
var count = forms.customer.foundset.search();
if (count == 0)
{
	plugins.dialogs.showWarningDialog('Alert', 'No records found','OK');
	controller.loadRecords(dupFoundset);
}
{code}{sub-section}{div}{{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=duplicateRecorddeleteRecord|class=node}{tr:id=name}{td}h6.duplicateRecorddeleteRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[NumberBoolean]{span}{span:id=iets|style=float: left; font-weight: bold;}duplicateRecorddeleteRecord{span}{span:id=iets|style=float: left;}\(\[index\], \[location\], \[changeSelection\]){span}{td}{tr}{tr:id=des}{td}{sub-section:duplicateRecorddeleteRecord_des|text=|trigger=button}{sub-section}{sub-section:duplicateRecorddeleteRecord_des|trigger=none|class=sIndent}DuplicateDelete currently currentselected record(s).
orIf recordthe atfoundset indexis in the foundset multiselect mode, all selected records are deleted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:duplicateRecorddeleteRecord_snc|text=|trigger=button}{sub-section}{sub-section:duplicateRecorddeleteRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:duplicateRecorddeleteRecord_prs|text=|trigger=button}{sub-section}{sub-section:duplicateRecorddeleteRecord_prs|trigger=none|class=sIndent}\[index\] -- index of record to duplicate; defaults to currently selected index. Ignored if first given parameter is a boolean value.
\[location\] -- a boolean or number when true the new record is added as the topmost record, when a number, the new record is added at specified index ; defaults to 1.
\{[Boolean]} \[changeSelection\] -- when true the selection is changed to the duplicated record; defaults to true.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:duplicateRecord_ret|text=|trigger=button}{sub-section}{sub-section:duplicateRecord_ret|trigger={sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:deleteRecord_ret|text=|trigger=button}{sub-section}{sub-section:deleteRecord_ret|trigger=none|class=sIndent}[NumberBoolean] -- boolean true if succesful all records could be deleted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:duplicateRecorddeleteRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateRecorddeleteRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:duplicateRecorddeleteRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateRecorddeleteRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:duplicateRecorddeleteRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateRecorddeleteRecord_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.duplicateRecord();
forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
var success = forms.customer.foundset.duplicateRecorddeleteRecord(1,2);
//duplicatecan thereturn firstfalse recordincase asof secondrelated recordfoundset //duplicateshaving therecords recordand (recordorphans indexrecords 3),are addsnot on top and selectsallowed by the record
forms.customer.foundset.duplicateRecord(3,true,true);
relation
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=finddeleteRecord-JSRecord|class=node}{tr:id=name}{td}h6.finddeleteRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}finddeleteRecord{span}{span:id=iets|style=float: left;}\(record){span}{td}{tr}{tr:id=des}{td}{sub-section:finddeleteRecord-JSRecord_des|text=|trigger=button}{sub-section}{sub-section:finddeleteRecord-JSRecord_des|trigger=none|class=sIndent}SetDelete record thefrom foundset in find mode. (Start a find request), use the "search" function to perform/exit the find.

Before going into find mode, all unsaved records will be saved in the database.
If this fails (due to validation failures or sql errors) or is not allowed (autosave off), the foundset will not go into find mode.
Make sure the operator and the data (value) are part of the string passed to dataprovider (included inside a pair of quotation marks).
Note: always make sure to check the result of the find() method.

When in find mode, columns can be assigned string expressions (including operators) that are evaluated as:
General:
      c1||c2    (condition1 or condition2)
      c|format  (apply format on condition like 'x|dd\-MM\-yyyy')
      !c        (not condition)
      #c        (modify condition, depends on column type)
      ^         (is null)
      ^=        (is null or empty)
      &lt;x     (less than value x)
      &gt;x     (greater than value x)
      &lt;=x    (less than or equals value x)
      &gt;=x    (greater than or equals value x)
      x...y     (between values x and y, including values)
      x         (equals value x)

 Number fields:
      =x       (equals value x)
      ^=       (is null or zero)

 Date fields:
      #c       (equals value x, entire day)
      now      (equals now, date and or time)
      //       (equals today)
      today    (equals today)

 Text fields:
      #c	        (case insensitive condition)
      = x      (equals a space and 'x')
      ^=       (is null or empty)
      %x%      (contains 'x')
      %x\_y%    (contains 'x' followed by any char and 'y')
      \%      (contains char '%')
      &#92;_      (contains char '\_')

Related columns can be assigned, they will result in related searches.
For example, "employees\_to\_department.location\_id = headoffice" finds all employees in the specified location).

Searching on related aggregates is supported.
For example, "orders\_to\_details.total\_amount = '&gt;1000'" finds all orders with total order details amount more than 1000.
 
Arrays can be used for searching a number of values, this will result in an 'IN' condition that will be used in the search.
The values are not restricted to strings but can be any type that matches the column type.
For example, "record.department\_id = \[1, 33, 99\]"{sub-section.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteRecord-JSRecord_snc|text=|trigger=button}{sub-section}{sub-section:deleteRecord-JSRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteRecord-JSRecord_prs|text=|trigger=button}{sub-section}{sub-section:deleteRecord-JSRecord_prs|trigger=none|class=sIndent}\{[JSRecord]} record -- The record to delete from the foundset.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:deleteRecord-JSRecord_ret|text=|trigger=button}{sub-section}{sub-section:deleteRecord-JSRecord_ret|trigger=none|class=sIndent}[Boolean] -- boolean true if record could be deleted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:deleteRecord-JSRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecord-JSRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteRecord-JSRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecord-JSRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteRecord-JSRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecord-JSRecord_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.deleteRecord(rec);
//can return false incase of related foundset having records and orphans records are not allowed by the relation
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=deleteRecord-Number|class=node}{tr:id=name}{td}h6.deleteRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}deleteRecord{span}{span:id=iets|style=float: left;}\(index){span}{td}{tr}{tr:id=des}{td}{sub-section:deleteRecord-Number_des|text=|trigger=button}{sub-section}{sub-section:deleteRecord-Number_des|trigger=none|class=sIndent}Delete record with the given index.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:deleteRecord-Number_snc|text=|trigger=button}{sub-section}{sub-section:deleteRecord-Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:deleteRecord-Number_prs|text=|trigger=button}{sub-section}{sub-section:deleteRecord-Number_prs|trigger=none|class=sIndent}\{[Number]} index -- The index of the record to delete.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:deleteRecord-Number_ret|text=|trigger=button}{sub-section}{sub-section:deleteRecord-Number_ret|trigger=none|class=sIndent}[Boolean] -- boolean true if record could be deleted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:deleteRecord-Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecord-Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:deleteRecord-Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecord-Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:deleteRecord-Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:deleteRecord-Number_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.deleteRecord(4);
//can return false incase of related foundset having records and orphans records are not allowed by the relation
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=duplicateFoundSet|class=node}{tr:id=name}{td}h6.duplicateFoundSet{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSFoundSet]{span}{span:id=iets|style=float: left; font-weight: bold;}duplicateFoundSet{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:duplicateFoundSet_des|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSet_des|trigger=none|class=sIndent}Get a duplicate of the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:duplicateFoundSet_snc|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSet_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:duplicateFoundSet_prs|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSet_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:duplicateFoundSet_ret|text=|trigger=button}{sub-section}{sub-section:duplicateFoundSet_ret|trigger=none|class=sIndent}[JSFoundSet] -- foundset duplicate.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:duplicateFoundSet_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateFoundSet_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:duplicateFoundSet_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateFoundSet_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:duplicateFoundSet_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:duplicateFoundSet_sam|trigger=none}{code:language=javascript}
var dupFoundset = forms.customer.foundset.duplicateFoundSet();
forms.customer.foundset.find();
//search some fields
var count = forms.customer.foundset.search();
if (count == 0)
{
	plugins.dialogs.showWarningDialog('Alert', 'No records found','OK');
	controller.loadRecords(dupFoundset);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=duplicateRecord|class=node}{tr:id=name}{td}h6.duplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}duplicateRecord{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:duplicateRecord_des|text=|trigger=button}{sub-section}{sub-section:duplicateRecord_des|trigger=none|class=sIndent}Duplicate current record, change selection to new record, place on top.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:duplicateRecord_snc|text=|trigger=button}{sub-section}{sub-section:duplicateRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=sncprs}{td}*SinceParameters*\\{sub-section:findduplicateRecord_sncprs|text=|trigger=button}{sub-section}{sub-section:findduplicateRecord_sncprs|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prsret}{td}*ParametersReturns*\\{sub-section:findduplicateRecord_prsret|text=|trigger=button}{sub-section}{sub-section:findduplicateRecord_prsret|trigger=none|class=sIndent}[Number] -- 0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=retsee}{td}*ReturnsAlso see*\\{sub-section:findduplicateRecord_retsee|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:find_ret|trigger=none|class=sIndent}[Boolean] -- true if the foundset is now in find mode, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:find_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:findduplicateRecord_see|trigger=none}[.search|JSFoundset#search]\\ [databaseManager.setAutoSave|Database Manager#setAutoSave]\\ [controller.find|controller#find]\\ [controller.search|controller#search]\\ {sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:findduplicateRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:findduplicateRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:findduplicateRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:findduplicateRecord_sam|trigger=none}{code:language=javascript}
if (forms.customer.foundset.duplicateRecord();
forms.customer.foundset.findduplicateRecord(false)); //findduplicate willthe failcurrent ifrecord, autosaveadds isat disabled and there are unsaved records
{
	columnTextDataProvider = 'a search value'
 // for numbers you have to make sure to format it correctly so that the decimal point is in your locales notation (. or ,)
	columnNumberDataProvider = '>' + utils.numberFormat(anumber, '####.00');
	columnDateDataProvider = '31-12-2010|dd-MM-yyyy'
	bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.searchduplicateRecord()
}3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getCurrentSortduplicateRecord-Boolean|class=node}{tr:id=name}{td}h6.getCurrentSortduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[StringNumber]{span}{span:id=iets|style=float: left; font-weight: bold;}getCurrentSortduplicateRecord{span}{span:id=iets|style=float: left;}\(onTop){span}{td}{tr}{tr:id=des}{td}{sub-section:getCurrentSortduplicateRecord-Boolean_des|text=|trigger=button}{sub-section}{sub-section:getCurrentSortduplicateRecord-Boolean_des|trigger=none|class=sIndent}Get the current sort columnsDuplicate selected record, change selection to new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getCurrentSortduplicateRecord-Boolean_snc|text=|trigger=button}{sub-section}{sub-section:getCurrentSortduplicateRecord-Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getCurrentSortduplicateRecord-Boolean_prs|text=|trigger=button}{sub-section}{sub-section:getCurrentSortduplicateRecord-Boolean_prs|trigger=none|class=sIndent}\{[Boolean]} onTop -- when true the new record is added as the topmost record.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getCurrentSortduplicateRecord-Boolean_ret|text=|trigger=button}{sub-section}{sub-section:getCurrentSortduplicateRecord-Boolean_ret|trigger=none|class=sIndent}[StringNumber] -- 0 Stringif sort columnsrecord was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getCurrentSortduplicateRecord-Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getCurrentSortduplicateRecord-Boolean_see|trigger=none}[.sort|JSFoundset#sort]\\ {sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getCurrentSortduplicateRecord-Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getCurrentSortduplicateRecord-Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getCurrentSortduplicateRecord-Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getCurrentSortduplicateRecord-Boolean_sam|trigger=none}{code:language=javascript}
//reverse the current sort

//the original sort "companyName asc, companyContact desc"
//the inversed sort "companyName desc, companyContact asc"
var foundsetSort = foundset.getCurrentSort()
var sortColumns = foundsetSort.split(',')
var newFoundsetSort = ''
for(var i=0; i<sortColumns.length; i++)
{
	var currentSort = sortColumns[i]
	var sortType = currentSort.substring(currentSort.length-3)
	if(sortType.equalsIgnoreCase('asc'))
	{
		newFoundsetSort += currentSort.replace(' asc', ' desc')
	}
	else
	{
		newFoundsetSort += currentSort.replace(' desc', ' asc')
	}
	if(i != sortColumns.length - 1)
	{
		newFoundsetSort += ','
	}
}
foundset.sort(newFoundsetSort)
{code}{forms.customer.foundset.duplicateRecord();
forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getDataProviderValueduplicateRecord-Boolean_Boolean|class=node}{tr:id=name}{td}h6.getDataProviderValueduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[ObjectNumber]{span}{span:id=iets|style=float: left; font-weight: bold;}getDataProviderValueduplicateRecord{span}{span:id=iets|style=float: left;}\(dataProviderIDonTop, changeSelection){span}{td}{tr}{tr:id=des}{td}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_des|text=|trigger=button}{sub-section}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_des|trigger=none|class=sIndent}GetDuplicate a value based on a dataprovider nameselected record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_prs|trigger=none|class=sIndent}\{[StringBoolean]} dataProviderIDonTop -- data provider name
{sub-section}{td}{trwhen true the new record is added as the topmost record.
\{[Boolean]} changeSelection -- when true the selection is changed to the duplicated record.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_ret|trigger=none|class=sIndent}[ObjectNumber] -- Object value 0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataProviderValueduplicateRecord-Boolean_Boolean_sam|trigger=none}{code:language=javascript}
var val =forms.customer.foundset.duplicateRecord();
forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.getDataProviderValue('contact_name'duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getDataSourceduplicateRecord-Number|class=node}{tr:id=name}{td}h6.getDataSourceduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[StringNumber]{span}{span:id=iets|style=float: left; font-weight: bold;}getDataSourceduplicateRecord{span}{span:id=iets|style=float: left;}\(index){span}{td}{tr}{tr:id=des}{td}{sub-section:getDataSourceduplicateRecord-Number_des|text=|trigger=button}{sub-section}{sub-section:getDataSourceduplicateRecord-Number_des|trigger=none|class=sIndent}GetDuplicate record theat datasourceindex used.in Thethe datasourcefoundset, ischange anselection urlto thatnew describesrecord, theplace dataon sourcetop.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getDataSourceduplicateRecord-Number_snc|text=|trigger=button}{sub-section}{sub-section:getDataSourceduplicateRecord-Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getDataSourceduplicateRecord-Number_prs|text=|trigger=button}{sub-section}{sub-section:getDataSourceduplicateRecord-Number_prs|trigger=none|class=sIndent}\{[Number]} index -- The index of the record to duplicate; defaults to currently selected index. Ignored if first given parameter is a boolean value.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getDataSourceduplicateRecord-Number_ret|text=|trigger=button}{sub-section}{sub-section:getDataSourceduplicateRecord-Number_ret|trigger=none|class=sIndent}[StringNumber] -- String data source 0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getDataSourceduplicateRecord-Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataSourceduplicateRecord-Number_see|trigger=none}[databaseManager.getDataSourceServerName|Database Manager#getDataSourceServerName]\\ [databaseManager.getDataSourceTableName|Database Manager#getDataSourceTableName]\\ {sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getDataSourceduplicateRecord-Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataSourceduplicateRecord-Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getDataSourceduplicateRecord-Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataSourceduplicateRecord-Number_sam|trigger=none}{code:language=javascript}
var dataSource
= forms.customer.foundset.getDataSourceduplicateRecord();
{code}{forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getFoundSetFilterParamsduplicateRecord-Number_Boolean|class=node}{tr:id=name}{td}h6.getFoundSetFilterParamsduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]\[]\[]Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getFoundSetFilterParamsduplicateRecord{span}{span:id=iets|style=float: left;}\(index, onTop){span}{td}{tr}{tr:id=des}{td}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_des|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_des|trigger=none|class=sIndent}GetDuplicate therecord listat ofindex previouslyin definedthe foundset filters.
The result is an array of:
 \[ tableName, dataprovider, operator, value, name \], change selection to new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_prs|trigger=none|class=sIndent}{sub-section}\{[Number]} index -- The index of the record to duplicate; defaults to currently selected index. Ignored if first given parameter is a boolean value.
\{[Boolean]} onTop -- when true the new record is added as the topmost record.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_ret|trigger=none|class=sIndent}[Object]\[]\[Number] -- Array of filter definitions0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFoundSetFilterParamsduplicateRecord-Number_Boolean_sam|trigger=none}{code:language=javascript}
var params = forms.customer.foundset.getFoundSetFilterParamsduplicateRecord()
for (var i = 0; params != null && i < params.length; i++)
{
	application.output('FoundSet filter on table ' + params[i][0]+ ': '+ params[i][1]+ ' '+params[i][2]+ ' '+params[i][3] +(params[i][4] == null ? ' [no name]' : ' ['+params[i][4]+']'))
};
forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean|class=node}{tr:id=name}{td}h6.getFoundSetFilterParamsduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]\[]\[]Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getFoundSetFilterParamsduplicateRecord{span}{span:id=iets|style=float: left;}\(filterNameindex, onTop, changeSelection){span}{td}{tr}{tr:id=des}{td}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_des|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_des|trigger=none|class=sIndent}GetDuplicate arecord previouslyat definedindex foundsetin filter, using its given name.
The result is an array of:
 \[ tableName, dataprovider, operator, value, name \]{sub-section}{td}{trthe foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_prs|trigger=none|class=sIndent}\{[StringNumber]} filterNameindex -- nameThe index of the filter to retrieve record to duplicate; defaults to currently selected index. Ignored if first given parameter is a boolean value.
\{[Boolean]} onTop -- when true the new record is added as the topmost record.
\{[Boolean]} changeSelection -- when true the selection is changed to the duplicated record.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_ret|trigger=none|class=sIndent}[Object]\[]\[]Number] -- Array of filter definitions0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getFoundSetFilterParams-StringduplicateRecord-Number_Boolean_Boolean_sam|trigger=none}{code:language=javascript}
var params = forms.customer.foundset.getFoundSetFilterParamsduplicateRecord()
for (var i = 0; params != null && i < params.length; i++)
{
	application.output('FoundSet filter on table ' + params[i][0]+ ': '+ params[i][1]+ ' '+params[i][2]+ ' '+params[i][3] +(params[i][4] == null ? ' [no name]' : ' ['+params[i][4]+']'))
}
{code;
forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRecordduplicateRecord-Number_Number|class=node}{tr:id=name}{td}h6.getRecordduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSRecordNumber]{span}{span:id=iets|style=float: left; font-weight: bold;}getRecordduplicateRecord{span}{span:id=iets|style=float: left;}\(index, location){span}{td}{tr}{tr:id=des}{td}{sub-section:getRecordduplicateRecord-Number_Number_des|text=|trigger=button}{sub-section}{sub-section:getRecordduplicateRecord-Number_Number_des|trigger=none|class=sIndent}GetDuplicate record at index in the foundset, recordchange objectselection atto thenew indexrecord.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRecordduplicateRecord-Number_Number_snc|text=|trigger=button}{sub-section}{sub-section:getRecordduplicateRecord-Number_Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getRecordduplicateRecord-Number_Number_prs|text=|trigger=button}{sub-section}{sub-section:getRecordduplicateRecord-Number_Number_prs|trigger=none|class=sIndent}\{[Number]} index -- The index of the record to duplicate; defaults to currently selected index. Ignored if first given parameter is a boolean value.
\{[Number]} location -- the new record is added at specified index
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getRecordduplicateRecord-Number_Number_ret|text=|trigger=button}{sub-section}{sub-section:getRecordduplicateRecord-Number_Number_ret|trigger=none|class=sIndent}[JSRecordNumber] -- Record record 0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRecordduplicateRecord-Number_Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordduplicateRecord-Number_Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRecordduplicateRecord-Number_Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordduplicateRecord-Number_Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRecordduplicateRecord-Number_Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordduplicateRecord-Number_Number_sam|trigger=none}{code:language=javascript}
var record =
forms.customer.foundset.duplicateRecord();
forms.customer.foundset.duplicateRecord(false); //duplicate the current record, adds at bottom
forms.customer.foundset.getRecord(indexduplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRecordIndexduplicateRecord-Number_Number_Boolean|class=node}{tr:id=name}{td}h6.getRecordIndexduplicateRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getRecordIndexduplicateRecord{span}{span:id=iets|style=float: left;}\(recordindex, location, changeSelection){span}{td}{tr}{tr:id=des}{td}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_des|text=|trigger=button}{sub-section}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_des|trigger=none|class=sIndent}GetDuplicate therecord recordat index in the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_prs|trigger=none|class=sIndent}\{[JSRecordNumber]} recordindex -- Record
{sub-section}{td}{tr}{tr:idThe index of the record to duplicate; defaults to currently selected index. Ignored if first given parameter is a boolean value.
\{[Number]} location -- the new record is added at specified index
\{[Boolean]} changeSelection -- when true the selection is changed to the duplicated record.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_ret|trigger=none|class=sIndent}[Number] -- int index 0 if record was not created or the record index if it was created.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordIndexduplicateRecord-Number_Number_Boolean_sam|trigger=none}{code:language=javascript}
var index = forms.customer.foundset.duplicateRecord();
forms.customer.foundset.getRecordIndexduplicateRecord(recordfalse);
{code}{sub-section}{ //duplicate the current record, adds at bottom
forms.customer.foundset.duplicateRecord(1,2); //duplicate the first record as second record
//duplicates the record (record index 3), adds on top and selects the record
forms.customer.foundset.duplicateRecord(3,true,true);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRelationNamefind|class=node}{tr:id=name}{td}h6.getRelationNamefind{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[StringBoolean]{span}{span:id=iets|style=float: left; font-weight: bold;}getRelationNamefind{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getRelationNamefind_des|text=|trigger=button}{sub-section}{sub-section:getRelationNamefind_des|trigger=none|class=sIndent}GetsSet the relationfoundset namein (nullfind ifmode. not(Start a relatedfind foundset).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRelationName_snc|text=|trigger=button}{sub-section}{sub-section:getRelationName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getRelationName_prs|text=|trigger=button}{sub-section}{sub-section:getRelationName_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getRelationName_ret|text=|trigger=button}{sub-section}{sub-section:getRelationName_ret|trigger=none|class=sIndent}[String] -- String relation name when related.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRelationName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRelationName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRelationName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRelationName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRelationName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRelationName_sam|trigger=none}{code:language=javascript}
var relName = forms.customer.foundset.getRelationName();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedIndex|class=node}{tr:id=name}{td}h6.getSelectedIndex{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedIndex{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedIndex_des|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_des|trigger=none|class=sIndent}Get the current record index of the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedIndex_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedIndex_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedIndex_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_ret|trigger=none|class=sIndent}[Number] -- int current index (1-based){sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedIndex_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndex_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedIndex_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndex_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedIndex_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndex_sam|trigger=none}{code:language=javascript}
//gets the current record index in the current foundset
var current = forms.customer.foundset.getSelectedIndex();
//sets the next record in the foundset
forms.customer.foundset.setSelectedIndex(current+1);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedIndexes|class=node}{tr:id=name}{td}h6.getSelectedIndexes{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedIndexes{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedIndexes_des|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_des|trigger=none|class=sIndent}Get the selected records indexes.
When the founset is in multiSelect mode (see property multiSelect), selection can be a more than 1 index.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedIndexes_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedIndexes_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedIndexes_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_ret|trigger=none|class=sIndent}[Number]\[] -- Array current indexes (1-based){sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedIndexes_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndexes_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedIndexes_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndexes_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedIndexes_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndexes_sam|trigger=none}{code:language=javascript}
var current = forms.customer.foundset.getSelectedIndexes();
var newSelection = new Array();
newSelection[0] = current[0];
forms.customer.foundset.setSelectedIndexes(newSelection);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedRecord|class=node}{tr:id=name}{td}h6.getSelectedRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSRecord]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedRecord{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedRecord_des|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_des|trigger=none|class=sIndent}Get the selected record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedRecord_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedRecord_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedRecord_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_ret|trigger=none|class=sIndent}[JSRecord] -- Record record.request), use the "search" function to perform/exit the find.

Before going into find mode, all unsaved records will be saved in the database.
If this fails (due to validation failures or sql errors) or is not allowed (autosave off), the foundset will not go into find mode.
Make sure the operator and the data (value) are part of the string passed to dataprovider (included inside a pair of quotation marks).
Note: always make sure to check the result of the find() method.

When in find mode, columns can be assigned string expressions (including operators) that are evaluated as:
General:
      c1||c2    (condition1 or condition2)
      c|format  (apply format on condition like 'x|dd\-MM\-yyyy')
      !c        (not condition)
      #c        (modify condition, depends on column type)
      ^         (is null)
      ^=        (is null or empty)
      &lt;x     (less than value x)
      &gt;x     (greater than value x)
      &lt;=x    (less than or equals value x)
      &gt;=x    (greater than or equals value x)
      x...y     (between values x and y, including values)
      x         (equals value x)

 Number fields:
      =x       (equals value x)
      ^=       (is null or zero)

 Date fields:
      #c       (equals value x, entire day)
      now      (equals now, date and or time)
      //       (equals today)
      today    (equals today)

 Text fields:
      #c	        (case insensitive condition)
      = x      (equals a space and 'x')
      ^=       (is null or empty)
      %x%      (contains 'x')
      %x\_y%    (contains 'x' followed by any char and 'y')
      \%      (contains char '%')
      &#92;_      (contains char '\_')

Related columns can be assigned, they will result in related searches.
For example, "employees\_to\_department.location\_id = headoffice" finds all employees in the specified location).

Searching on related aggregates is supported.
For example, "orders\_to\_details.total\_amount = '&gt;1000'" finds all orders with total order details amount more than 1000.

Arrays can be used for searching a number of values, this will result in an 'IN' condition that will be used in the search.
The values are not restricted to strings but can be any type that matches the column type.
For example, "record.department\_id = \[1, 33, 99\]"{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=seesnc}{td}*Also seeSince*\\{sub-section:getSelectedRecordfind_seesnc|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordfind_seesnc|trigger=none|class=sIndent} Replace with version info{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=linkprs}{td}*External linksParameters*\\{sub-section:getSelectedRecordfind_linkprs|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordfind_linkprs|trigger=none|class=sIndent}{sub-section}{div}{td}{tr}{builder-show}{tr:id=samret}{td}*SampleReturns*\\{sub-section:getSelectedRecordfind_samret|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordfind_samret|trigger=none}{code:language=javascript}
var selectedRecord = forms.customer.foundset.getSelectedRecord();
{code}{|class=sIndent}[Boolean] -- true if the foundset is now in find mode, false otherwise.{sub-section}{div}{td}{tr}{trbuilder-show:classpermission=lastDetailRowedit}{tdtr:id=see}{td}{tr}{tbody}{tbody:id=getSelectedRecords|class=node}{tr:id=name}{td}h6.getSelectedRecords*Also see*\\{sub-section:find_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:find_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=siglink}{td}{span:style=float: left; margin-right: 5px;}[JSRecord]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedRecords{span}{span:id=iets|style=float: left;}\(){span*External links*\\{sub-section:find_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:find_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=dessam}{td}*Sample*\\{sub-section:getSelectedRecordsfind_dessam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordsfind_dessam|trigger=none|class=sIndent}Get the selected records.
When the founset is in multiSelect mode (see property multiSelect), selection can be a more than 1 record.{sub-section}{td}{tr}{builder-show:permission=edit}{code:language=javascript}
if (forms.customer.foundset.find()) //find will fail if autosave is disabled and there are unsaved records
{
	columnTextDataProvider = 'a search value'
	// for numbers you have to make sure to format it correctly so that the decimal point is in your locales notation (. or ,)
	columnNumberDataProvider = '>' + utils.numberFormat(anumber, '####.00');
	columnDateDataProvider = '31-12-2010|dd-MM-yyyy'
	forms.customer.foundset.search()
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getCurrentSort|class=node}{tr:id=name}{td}h6.getCurrentSort{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getCurrentSort{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=sncdes}{td}*Since*\\{sub-section:getSelectedRecordsgetCurrentSort_sncdes|text=|trigger=button}{sub-section}{sub-section:getSelectedRecordsgetCurrentSort_sncdes|trigger=none|class=sIndent}Get Replacethe withcurrent versionsort infocolumns.{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prssnc}{td}*ParametersSince*\\{sub-section:getSelectedRecordsgetCurrentSort_prssnc|text=|trigger=button}{sub-section}{sub-section:getSelectedRecordsgetCurrentSort_prssnc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=retprs}{td}*Parameters*\\{sub-section:getCurrentSort_prs|text=|trigger=button}{sub-section}{sub-section:getCurrentSort_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedRecordsgetCurrentSort_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedRecordsgetCurrentSort_ret|trigger=none|class=sIndent}[JSRecordString]\[] -- ArrayString currentsort records.columns{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedRecordsgetCurrentSort_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordsgetCurrentSort_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedRecordsgetCurrentSort_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordsgetCurrentSort_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedRecordsgetCurrentSort_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecordsgetCurrentSort_sam|trigger=none}{code:language=javascript}
var selectedRecords//reverse the current sort

//the original sort "companyName asc, companyContact desc"
//the inversed sort "companyName desc, companyContact asc"
var foundsetSort = forms.customer.foundset.getSelectedRecords();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{foundset.getCurrentSort()
var sortColumns = foundsetSort.split(',')
var newFoundsetSort = ''
for(var i=0; i<sortColumns.length; i++)
{
	var currentSort = sortColumns[i]
	var sortType = currentSort.substring(currentSort.length-3)
	if(sortType.equalsIgnoreCase('asc'))
	{
		newFoundsetSort += currentSort.replace(' asc', ' desc')
	}
	else
	{
		newFoundsetSort += currentSort.replace(' desc', ' asc')
	}
	if(i != sortColumns.length - 1)
	{
		newFoundsetSort += ','
	}
}
foundset.sort(newFoundsetSort)
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSizegetDataProviderValue|class=node}{tr:id=name}{td}h6.getSizegetDataProviderValue{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[NumberObject]{span}{span:id=iets|style=float: left; font-weight: bold;}getSizegetDataProviderValue{span}{span:id=iets|style=float: left;}\(dataProviderID){span}{td}{tr}{tr:id=des}{td}{sub-section:getSizegetDataProviderValue_des|text=|trigger=button}{sub-section}{sub-section:getSizegetDataProviderValue_des|trigger=none|class=sIndent}Get thea numbervalue ofbased recordson ina thisdataprovider foundset.
This is the number of records loaded, note that when looping over a foundset, size() may
increase as more records are loaded.{sub-section}{td}{tr}{builder-show:permission=name.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSizegetDataProviderValue_snc|text=|trigger=button}{sub-section}{sub-section:getSizegetDataProviderValue_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSizegetDataProviderValue_prs|text=|trigger=button}{sub-section}{sub-section:getSizegetDataProviderValue_prs|trigger=none|class=sIndent}\{[String]} dataProviderID -- data provider name
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSizegetDataProviderValue_ret|text=|trigger=button}{sub-section}{sub-section:getSizegetDataProviderValue_ret|trigger=none|class=sIndent}[NumberObject] -- int current size.Object value{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSizegetDataProviderValue_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSizegetDataProviderValue_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSizegetDataProviderValue_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSizegetDataProviderValue_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSizegetDataProviderValue_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSizegetDataProviderValue_sam|trigger=none}{code:language=javascript}
var nrRecordsval = forms.customer.foundset.getSize()

// to loop over foundset, recalculate size for each record
	for (var i = 1; i <= forms.customer.foundset.getSize(); i++)
	{
		var rec = forms.customer.foundset.getRecord(i);
	}
{getDataProviderValue('contact_name');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=invertRecordsgetDataSource|class=node}{tr:id=name}{td}h6.invertRecordsgetDataSource{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void[String]{span}{span:id=iets|style=float: left; font-weight: bold;}invertRecordsgetDataSource{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:invertRecordsgetDataSource_des|text=|trigger=button}{sub-section}{sub-section:invertRecordsgetDataSource_des|trigger=none|class=sIndent}InvertGet the foundsetdatasource againstused.
allThe rowsdatasource ofis the current table.
All records an url that aredescribes not in the foundset will become the current foundsetdata source.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:invertRecordsgetDataSource_snc|text=|trigger=button}{sub-section}{sub-section:invertRecordsgetDataSource_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:invertRecordsgetDataSource_prs|text=|trigger=button}{sub-section}{sub-section:invertRecordsgetDataSource_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:invertRecordsgetDataSource_ret|text=|trigger=button}{sub-section}{sub-section:invertRecordsgetDataSource_ret|trigger=none|class=sIndent}void[String] -- String data source.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:invertRecordsgetDataSource_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:invertRecordsgetDataSource_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:invertRecordsgetDataSource_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:invertRecordsgetDataSource_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:invertRecordsgetDataSource_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:invertRecordsgetDataSource_sam|trigger=none}{code:language=javascript}
var dataSource = forms.customer.foundset.invertRecordsgetDataSource();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=isInFindgetFoundSetFilterParams|class=node}{tr:id=name}{td}h6.isInFindgetFoundSetFilterParams{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean[Object]\[]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}isInFindgetFoundSetFilterParams{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:isInFindgetFoundSetFilterParams_des|text=|trigger=button}{sub-section}{sub-section:isInFindgetFoundSetFilterParams_des|trigger=none|class=sIndent}Check if this foundset is in find mode.Get the list of previously defined foundset filters.
The result is an array of:
 \[ tableName, dataprovider, operator, value, name \]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:isInFindgetFoundSetFilterParams_snc|text=|trigger=button}{sub-section}{sub-section:isInFindgetFoundSetFilterParams_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:isInFindgetFoundSetFilterParams_prs|text=|trigger=button}{sub-section}{sub-section:isInFindgetFoundSetFilterParams_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:isInFindgetFoundSetFilterParams_ret|text=|trigger=button}{sub-section}{sub-section:isInFindgetFoundSetFilterParams_ret|trigger=none|class=sIndent}[BooleanObject]\[]\[] -- booleanArray isof infilter find modedefinitions.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:isInFindgetFoundSetFilterParams_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isInFindgetFoundSetFilterParams_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:isInFindgetFoundSetFilterParams_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isInFindgetFoundSetFilterParams_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:isInFindgetFoundSetFilterParams_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isInFindgetFoundSetFilterParams_sam|trigger=none}{code:language=javascript}
//Returnsvar trueparams when find was called on this foundset and search has not been called yet
forms.customer.foundset.isInFind();= foundset.getFoundSetFilterParams()
for (var i = 0; params != null && i < params.length; i++)
{
	application.output('FoundSet filter on table ' + params[i][0]+ ': '+ params[i][1]+ ' '+params[i][2]+ ' '+params[i][3] +(params[i][4] == null ? ' [no name]' : ' ['+params[i][4]+']'))
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadAllRecordsgetFoundSetFilterParams-String|class=node}{tr:id=name}{td}h6.loadAllRecordsgetFoundSetFilterParams{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[BooleanObject]\[]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}loadAllRecordsgetFoundSetFilterParams{span}{span:id=iets|style=float: left;}\(filterName){span}{td}{tr}{tr:id=des}{td}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_des|text=|trigger=button}{sub-section}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_des|trigger=none|class=sIndent}LoadsGet alla accessiblepreviously recordsdefined fromfoundset thefilter, datasourceusing intoits thegiven foundsetname.
FiltersThe onresult theis foundsetan arearray applied.of:
 Before\[ loadingtableName, thedataprovider, recordsoperator, allvalue, unsaved records will be saved in the database.
If this fails (due to validation failures or sql errors) or is not allowed (autosave off), 
records will not be loaded,{sub-section}{td}{tr}{builder-showname \]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadAllRecordsgetFoundSetFilterParams-String_snc|text=|trigger=button}{sub-section}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:loadAllRecordsgetFoundSetFilterParams-String_prs|text=|trigger=button}{sub-section}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_prs|trigger=none|class=sIndent}\{[String]} filterName -- name of the filter to retrieve.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:loadAllRecordsgetFoundSetFilterParams-String_ret|text=|trigger=button}{sub-section}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_ret|trigger=none|class=sIndent}[BooleanObject]\[]\[] -- trueArray ifof records are loaded, false otherwisefilter definitions.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadAllRecordsgetFoundSetFilterParams-String_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_see|trigger=none}[.addFoundSetFilterParam|JSFoundset#addFoundSetFilterParam]\\ {sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadAllRecordsgetFoundSetFilterParams-String_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadAllRecordsgetFoundSetFilterParams-String_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadAllRecordsgetFoundSetFilterParams-String_sam|trigger=none}{code:language=javascript}
forms.customer.var params = foundset.loadAllRecords();
{code}{getFoundSetFilterParams()
for (var i = 0; params != null && i < params.length; i++)
{
	application.output('FoundSet filter on table ' + params[i][0]+ ': '+ params[i][1]+ ' '+params[i][2]+ ' '+params[i][3] +(params[i][4] == null ? ' [no name]' : ' ['+params[i][4]+']'))
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadOmittedRecordsgetQuery|class=node}{tr:id=name}{td}h6.loadOmittedRecordsgetQuery{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[BooleanQBSelect]{span}{span:id=iets|style=float: left; font-weight: bold;}loadOmittedRecordsgetQuery{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:loadOmittedRecordsgetQuery_des|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecordsgetQuery_des|trigger=none|class=sIndent}LoadsGet the recordsquery that are currently omitted as athe foundset. is Before loading the omitted records, all unsaved records will be saved in the database.
If this fails (due to validation failures or sql errors) or is not allowed (autosave off), 
omitted records will not be loaded,currently using.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadOmittedRecordsgetQuery_snc|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecordsgetQuery_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:loadOmittedRecordsgetQuery_prs|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecordsgetQuery_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:loadOmittedRecordsgetQuery_ret|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecordsgetQuery_ret|trigger=none|class=sIndent}[BooleanQBSelect] -- true if records are loaded, false otherwisequery.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadOmittedRecordsgetQuery_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadOmittedRecordsgetQuery_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadOmittedRecordsgetQuery_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadOmittedRecordsgetQuery_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadOmittedRecordsgetQuery_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadOmittedRecordsgetQuery_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.loadOmittedRecords(
var q = foundset.getQuery()
q.where.add(q.columns.x.eq(100))
foundset.loadRecords(q);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecordsgetRecord|class=node}{tr:id=name}{td}h6.loadRecordsgetRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[BooleanJSRecord]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecordsgetRecord{span}{span:id=iets|style=float: left;}\(\[input\], \[queryArgumentsArray\]index){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecordsgetRecord_des|text=|trigger=button}{sub-section}{sub-section:loadRecordsgetRecord_des|trigger=none|class=sIndent}LoadGet recordsthe withrecord primaryobject key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) to reload all last related records again, if for example when searched in tabpanel
foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-sectionat the index.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRecord_snc|text=|trigger=button}{sub-section}{sub-section:getRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getRecord_prs|text=|trigger=button}{sub-section}{sub-section:getRecord_prs|trigger=none|class=sIndent}\{[Number]} index -- record index
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getRecord_ret|text=|trigger=button}{sub-section}{sub-section:getRecord_ret|trigger=none|class=sIndent}[JSRecord] -- Record record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snclink}{td}*SinceExternal links*\\{sub-section:loadRecordsgetRecord_snclink|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecordsgetRecord_snclink|trigger=none|class=sIndent} Replace with version info{sub-section}{div}{td}{tr}{builder-show}{tr:id=prssam}{td}*ParametersSample*\\{sub-section:loadRecordsgetRecord_prssam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecordsgetRecord_prssam|trigger=none|class=sIndent}\[input\] -- foundset/pkdataset/single\_pk/query
\[queryArgumentsArray\] -- used when input is a query
}{code:language=javascript}
var record = forms.customer.foundset.getRecord(index);
{code}{sub-section}{div}{td}{tr}{tr:id=retclass=lastDetailRow}{td}{td}*Returns*\\{sub-section:loadRecords_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit{tr}{tbody}{tbody:id=getRecordIndex|class=node}{tr:id=name}{td}h6.getRecordIndex{td}{tr}{tr:id=seesig}{td}*Also see*\\{sub-section:loadRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getRecordIndex{span}{span:id=iets|style=float: left;}\(record){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords_seegetRecordIndex_des|text=|trigger=nonebutton}{sub-section}{divsub-section:getRecordIndex_des|trigger=none|class=sIndent}Get the record index. Will return \-1 if the record can't be found.{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=linksnc}{td}*External linksSince*\\{sub-section:loadRecordsgetRecordIndex_linksnc|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecordsgetRecordIndex_linksnc|trigger=none|class=sIndent} Replace with version info{sub-section}{div}{td}{tr}{builder-show}{tr:id=samprs}{td}*SampleParameters*\\{sub-section:loadRecordsgetRecordIndex_samprs|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecordsgetRecordIndex_samprs|trigger=none|class=sIndent}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
\{[JSRecord]} record -- Record
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getRecordIndex_ret|text=|trigger=button}{sub-section}{sub-section:getRecordIndex_ret|trigger=none|class=sIndent}[Number] -- int index.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRecordIndex_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordIndex_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRecordIndex_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordIndex_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRecordIndex_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRecordIndex_sam|trigger=none}{code:language=javascript}
var index = forms.customer.foundset.getRecordIndex(record);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getRelationName|class=node}{tr:id=name}{td}h6.getRelationName{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getRelationName{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getRelationName_des|text=|trigger=button}{sub-section}{sub-section:getRelationName_des|trigger=none|class=sIndent}Gets the relation name (null if not a related foundset).{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getRelationName_snc|text=|trigger=button}{sub-section}{sub-section:getRelationName_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getRelationName_prs|text=|trigger=button}{sub-section}{sub-section:getRelationName_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getRelationName_ret|text=|trigger=button}{sub-section}{sub-section:getRelationName_ret|trigger=none|class=sIndent}[String] -- String relation name when related.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getRelationName_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRelationName_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getRelationName_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRelationName_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getRelationName_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getRelationName_sam|trigger=none}{code:language=javascript}
var relName = forms.customer.foundset.getRelationName();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedIndex|class=node}{tr:id=name}{td}h6.getSelectedIndex{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedIndex{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedIndex_des|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_des|trigger=none|class=sIndent}Get the current record index of the foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedIndex_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedIndex_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedIndex_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedIndex_ret|trigger=none|class=sIndent}[Number] -- int current index (1-based){sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedIndex_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndex_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedIndex_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndex_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedIndex_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndex_sam|trigger=none}{code:language=javascript}
//gets the current record index in the current foundset
var current = forms.customer.foundset.getSelectedIndex();
//sets the next record in the foundset
forms.customer.foundset.setSelectedIndex(current+1);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedIndexes|class=node}{tr:id=name}{td}h6.getSelectedIndexes{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedIndexes{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedIndexes_des|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_des|trigger=none|class=sIndent}Get the selected records indexes.
When the founset is in multiSelect mode (see property multiSelect), selection can be a more than 1 index.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedIndexes_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedIndexes_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedIndexes_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedIndexes_ret|trigger=none|class=sIndent}[Number]\[] -- Array current indexes (1-based){sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedIndexes_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndexes_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedIndexes_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndexes_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedIndexes_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedIndexes_sam|trigger=none}{code:language=javascript}
var current = forms.customer.foundset.getSelectedIndexes();
var newSelection = new Array();
newSelection[0] = current[0];
forms.customer.foundset.setSelectedIndexes(newSelection);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedRecord|class=node}{tr:id=name}{td}h6.getSelectedRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSRecord]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedRecord{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedRecord_des|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_des|trigger=none|class=sIndent}Get the selected record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedRecord_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedRecord_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedRecord_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedRecord_ret|trigger=none|class=sIndent}[JSRecord] -- Record record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecord_sam|trigger=none}{code:language=javascript}
var selectedRecord = forms.customer.foundset.getSelectedRecord();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSelectedRecords|class=node}{tr:id=name}{td}h6.getSelectedRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSRecord]\[]{span}{span:id=iets|style=float: left; font-weight: bold;}getSelectedRecords{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSelectedRecords_des|text=|trigger=button}{sub-section}{sub-section:getSelectedRecords_des|trigger=none|class=sIndent}Get the selected records.
When the founset is in multiSelect mode (see property multiSelect), selection can be a more than 1 record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSelectedRecords_snc|text=|trigger=button}{sub-section}{sub-section:getSelectedRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSelectedRecords_prs|text=|trigger=button}{sub-section}{sub-section:getSelectedRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSelectedRecords_ret|text=|trigger=button}{sub-section}{sub-section:getSelectedRecords_ret|trigger=none|class=sIndent}[JSRecord]\[] -- Array current records.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSelectedRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSelectedRecords_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSelectedRecords_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSelectedRecords_sam|trigger=none}{code:language=javascript}
var selectedRecords = forms.customer.foundset.getSelectedRecords();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getSize|class=node}{tr:id=name}{td}h6.getSize{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}getSize{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getSize_des|text=|trigger=button}{sub-section}{sub-section:getSize_des|trigger=none|class=sIndent}Get the number of records in this foundset.
This is the number of records loaded, note that when looping over a foundset, size() may
increase as more records are loaded.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getSize_snc|text=|trigger=button}{sub-section}{sub-section:getSize_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getSize_prs|text=|trigger=button}{sub-section}{sub-section:getSize_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getSize_ret|text=|trigger=button}{sub-section}{sub-section:getSize_ret|trigger=none|class=sIndent}[Number] -- int current size.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getSize_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSize_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getSize_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSize_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getSize_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getSize_sam|trigger=none}{code:language=javascript}
var nrRecords = forms.customer.foundset.getSize()

// to loop over foundset, recalculate size for each record
for (var i = 1; i <= forms.customer.foundset.getSize(); i++)
{
	var rec = forms.customer.foundset.getRecord(i);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=hasConditions|class=node}{tr:id=name}{td}h6.hasConditions{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}hasConditions{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:hasConditions_des|text=|trigger=button}{sub-section}{sub-section:hasConditions_des|trigger=none|class=sIndent}Check wether the foundset has any conditions from a previous find action.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:hasConditions_snc|text=|trigger=button}{sub-section}{sub-section:hasConditions_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:hasConditions_prs|text=|trigger=button}{sub-section}{sub-section:hasConditions_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:hasConditions_ret|text=|trigger=button}{sub-section}{sub-section:hasConditions_ret|trigger=none|class=sIndent}[Boolean] -- wether the foundset has find-conditions{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:hasConditions_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:hasConditions_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:hasConditions_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:hasConditions_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:hasConditions_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:hasConditions_sam|trigger=none}{code:language=javascript}
if (forms.customer.foundset.hasConditions())
{
		// foundset had find actions
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=invertRecords|class=node}{tr:id=name}{td}h6.invertRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}invertRecords{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:invertRecords_des|text=|trigger=button}{sub-section}{sub-section:invertRecords_des|trigger=none|class=sIndent}Invert the foundset against all rows of the current table.
All records that are not in the foundset will become the current foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:invertRecords_snc|text=|trigger=button}{sub-section}{sub-section:invertRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:invertRecords_prs|text=|trigger=button}{sub-section}{sub-section:invertRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:invertRecords_ret|text=|trigger=button}{sub-section}{sub-section:invertRecords_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:invertRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:invertRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:invertRecords_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:invertRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:invertRecords_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:invertRecords_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.invertRecords();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=isInFind|class=node}{tr:id=name}{td}h6.isInFind{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}isInFind{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:isInFind_des|text=|trigger=button}{sub-section}{sub-section:isInFind_des|trigger=none|class=sIndent}Check if this foundset is in find mode.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:isInFind_snc|text=|trigger=button}{sub-section}{sub-section:isInFind_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:isInFind_prs|text=|trigger=button}{sub-section}{sub-section:isInFind_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:isInFind_ret|text=|trigger=button}{sub-section}{sub-section:isInFind_ret|trigger=none|class=sIndent}[Boolean] -- boolean is in find mode.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:isInFind_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isInFind_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:isInFind_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isInFind_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:isInFind_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isInFind_sam|trigger=none}{code:language=javascript}
//Returns true when find was called on this foundset and search has not been called yet
forms.customer.foundset.isInFind();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadAllRecords|class=node}{tr:id=name}{td}h6.loadAllRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadAllRecords{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:loadAllRecords_des|text=|trigger=button}{sub-section}{sub-section:loadAllRecords_des|trigger=none|class=sIndent}Loads all accessible records from the datasource into the foundset.
Filters on the foundset are applied.

Before loading the records, all unsaved records will be saved in the database.
If this fails (due to validation failures or sql errors) or is not allowed (autosave off), 
records will not be loaded,{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadAllRecords_snc|text=|trigger=button}{sub-section}{sub-section:loadAllRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:loadAllRecords_prs|text=|trigger=button}{sub-section}{sub-section:loadAllRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:loadAllRecords_ret|text=|trigger=button}{sub-section}{sub-section:loadAllRecords_ret|trigger=none|class=sIndent}[Boolean] -- true if records are loaded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadAllRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadAllRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadAllRecords_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadAllRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadAllRecords_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadAllRecords_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.loadAllRecords();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadOmittedRecords|class=node}{tr:id=name}{td}h6.loadOmittedRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadOmittedRecords{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:loadOmittedRecords_des|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecords_des|trigger=none|class=sIndent}Loads the records that are currently omitted as a foundset.

Before loading the omitted records, all unsaved records will be saved in the database.
If this fails (due to validation failures or sql errors) or is not allowed (autosave off), 
omitted records will not be loaded,{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadOmittedRecords_snc|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:loadOmittedRecords_prs|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:loadOmittedRecords_ret|text=|trigger=button}{sub-section}{sub-section:loadOmittedRecords_ret|trigger=none|class=sIndent}[Boolean] -- true if records are loaded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadOmittedRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadOmittedRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadOmittedRecords_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadOmittedRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadOmittedRecords_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadOmittedRecords_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.loadOmittedRecords();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords_des|text=|trigger=button}{sub-section}{sub-section:loadRecords_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-JSFoundSet|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(foundset){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-JSFoundSet_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSFoundSet_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-JSFoundSet_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSFoundSet_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-JSFoundSet_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSFoundSet_prs|trigger=none|class=sIndent}\{[JSFoundSet]} foundset -- The foundset to load records from
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-JSFoundSet_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSFoundSet_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-JSFoundSet_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-JSFoundSet_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-JSFoundSet_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-JSFoundSet_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-JSFoundSet_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-JSFoundSet_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-JSDataSet|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(dataset){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-JSDataSet_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSDataSet_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-JSDataSet_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSDataSet_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-JSDataSet_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSDataSet_prs|trigger=none|class=sIndent}\{[JSDataSet]} dataset -- pkdataset
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-JSDataSet_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-JSDataSet_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-JSDataSet_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-JSDataSet_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-JSDataSet_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-JSDataSet_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-JSDataSet_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-JSDataSet_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-QBSelect|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(querybuilder){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-QBSelect_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-QBSelect_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-QBSelect_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-QBSelect_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-QBSelect_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-QBSelect_prs|trigger=none|class=sIndent}\{[QBSelect]} querybuilder -- the query builder
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-QBSelect_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-QBSelect_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-QBSelect_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-QBSelect_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-QBSelect_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-QBSelect_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-QBSelect_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-QBSelect_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-UUID|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(uuidpk){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-UUID_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-UUID_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-UUID_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-UUID_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-UUID_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-UUID_prs|trigger=none|class=sIndent}\{[UUID]} uuidpk -- single\-column pk value
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-UUID_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-UUID_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-UUID_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-UUID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-UUID_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-UUID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-UUID_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-UUID_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-Number|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(numberpk){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-Number_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-Number_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-Number_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-Number_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-Number_prs|trigger=none|class=sIndent}\{[Number]} numberpk -- single\-column pk value
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-Number_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-Number_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-Number_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-String|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(queryString){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-String_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-String_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-String_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_prs|trigger=none|class=sIndent}\{[String]} queryString -- select statement
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-String_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-String_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-String_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-String_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-String_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=loadRecords-String_ObjectArray|class=node}{tr:id=name}{td}h6.loadRecords{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}loadRecords{span}{span:id=iets|style=float: left;}\(queryString, argumentsArray){span}{td}{tr}{tr:id=des}{td}{sub-section:loadRecords-String_ObjectArray_des|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_ObjectArray_des|trigger=none|class=sIndent}Load records with primary key (dataset/number/uuid) or query.

Load records can be used in 5 different ways
1) to copy foundset data from another foundset
foundset.loadRecords(fs);

2) to load a primary key dataset, will remove related sort!
var dataset = databaseManager.getDataSetByQuery(...);
foundset.loadRecords(dataset);

3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
foundset.loadRecords(123);
foundset.loadRecords(application.getUUID('6b5e2f5d\-047e\-45b3\-80ee\-3a32267b1f20'));

4) Use without arguments to reload all last related records again, if for example when searched in tabpanel.
when in find mode, this will reload the records from before the find() call.

foundset.loadRecords();

5) to load records in to the form based on a query (also known as 'Form by query')
foundset.loadRecords(sqlstring,parameters);
limitations/requirements for sqlstring are:
\-must start with 'select'
\-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a\_id, b\_id,c\_id ...')
\-can contain '?' which are replaced with values from the array supplied to parameters argument
if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
\-must contain 'from' keyword
\-the 'from' must be a comma separated list of table names
\-must at least select from the table used in Servoy Form
\-cannot contain 'group by', 'having' or 'union'
\-all columns must be fully qualified like 'orders.order\_id'{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:loadRecords-String_ObjectArray_snc|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_ObjectArray_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:loadRecords-String_ObjectArray_prs|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_ObjectArray_prs|trigger=none|class=sIndent}\{[String]} queryString -- select statement
\{[Object]\[]} argumentsArray -- arguments to query
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:loadRecords-String_ObjectArray_ret|text=|trigger=button}{sub-section}{sub-section:loadRecords-String_ObjectArray_ret|trigger=none|class=sIndent}[Boolean] -- true if successful{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:loadRecords-String_ObjectArray_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-String_ObjectArray_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:loadRecords-String_ObjectArray_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-String_ObjectArray_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:loadRecords-String_ObjectArray_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:loadRecords-String_ObjectArray_sam|trigger=none}{code:language=javascript}
//Load records can be used in 5 different ways
//1) to copy foundset data from another foundset
//forms.customer.foundset.loadRecords(fs);

//2) to load a primary key dataset, will remove related sort!
//var dataset = databaseManager.getDataSetByQuery(...);
// dataset must match the table primary key columns (alphabetically ordered)
//forms.customer.foundset.loadRecords(dataset);

//3) to load a single record by primary key, will remove related sort! (pk should be a number or UUID)
//forms.customer.foundset.loadRecords(123);
//forms.customer.foundset.loadRecords(application.getUUID('6b5e2f5d-047e-45b3-80ee-3a32267b1f20'));

//4) to reload all last related records again, if for example when searched in tabpanel
//forms.customer.foundset.loadRecords();

//5) to load records in to the form based on a query (also known as 'Form by query')
//forms.customer.foundset.loadRecords(sqlstring,parameters);
//limitations/requirements for sqlstring are:
//-must start with 'select'
//-the selected columns must be the (Servoy Form) table primary key columns (alphabetically ordered like 'select a_id, b_id,c_id ...')
//-can contain '?' which are replaced with values from the array supplied to parameters argument
//if the sqlstring contains an 'order by' clause, the records will be sorted accordingly and additional constraints apply:
//-must contain 'from' keyword
//-the 'from' must be a comma separated list of table names
//-must at least select from the table used in Servoy Form
//-cannot contain 'group by', 'having' or 'union'
//-all columns must be fully qualified like 'orders.order_id'
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRecord|class=node}{tr:id=name}{td}h6.newRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}newRecord{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:newRecord_des|text=|trigger=button}{sub-section}{sub-section:newRecord_des|trigger=none|class=sIndent}Create a new record on top of the foundset and change selection to it. Returns \-1 if the record can't be made.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRecord_snc|text=|trigger=button}{sub-section}{sub-section:newRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:newRecord_prs|text=|trigger=button}{sub-section}{sub-section:newRecord_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:newRecord_ret|text=|trigger=button}{sub-section}{sub-section:newRecord_ret|trigger=none|class=sIndent}[Number] -- int index of new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord_sam|trigger=none}{code:language=javascript}
// foreign key data is only filled in for equals (=) relation items 
var idx = forms.customer.foundset.newRecord(false); // add as last record
// forms.customer.foundset.newRecord(); // adds as first record
// forms.customer.foundset.newRecord(2); //adds as second record
if (idx >= 0) // returned index is -1 in case of failure 
{
	forms.customer.foundset.some_column = "some text";
	application.output("added on position " + idx);
	// when adding at the end of the foundset, the returned index
	// corresponds with the size of the foundset
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRecord-Boolean|class=node}{tr:id=name}{td}h6.newRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}newRecord{span}{span:id=iets|style=float: left;}\(onTop){span}{td}{tr}{tr:id=des}{td}{sub-section:newRecord-Boolean_des|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_des|trigger=none|class=sIndent}Create a new record in the foundset and change selection to it. Returns \-1 if the record can't be made.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRecord-Boolean_snc|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:newRecord-Boolean_prs|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_prs|trigger=none|class=sIndent}\{[Boolean]} onTop -- when true the new record is added as the topmost record.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:newRecord-Boolean_ret|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_ret|trigger=none|class=sIndent}[Number] -- int index of new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRecord-Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRecord-Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRecord-Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Boolean_sam|trigger=none}{code:language=javascript}
// foreign key data is only filled in for equals (=) relation items 
var idx = forms.customer.foundset.newRecord(false); // add as last record
// forms.customer.foundset.newRecord(); // adds as first record
// forms.customer.foundset.newRecord(2); //adds as second record
if (idx >= 0) // returned index is -1 in case of failure 
{
	forms.customer.foundset.some_column = "some text";
	application.output("added on position " + idx);
	// when adding at the end of the foundset, the returned index
	// corresponds with the size of the foundset
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRecord-Boolean_Boolean|class=node}{tr:id=name}{td}h6.newRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}newRecord{span}{span:id=iets|style=float: left;}\(onTop, changeSelection){span}{td}{tr}{tr:id=des}{td}{sub-section:newRecord-Boolean_Boolean_des|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_Boolean_des|trigger=none|class=sIndent}Create a new record in the foundset. Returns \-1 if the record can't be made.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRecord-Boolean_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:newRecord-Boolean_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_Boolean_prs|trigger=none|class=sIndent}\{[Boolean]} onTop -- when true the new record is added as the topmost record.
\{[Boolean]} changeSelection -- when true the selection is changed to the new record.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:newRecord-Boolean_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:newRecord-Boolean_Boolean_ret|trigger=none|class=sIndent}[Number] -- int index of new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRecord-Boolean_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Boolean_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRecord-Boolean_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Boolean_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRecord-Boolean_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Boolean_Boolean_sam|trigger=none}{code:language=javascript}
// foreign key data is only filled in for equals (=) relation items 
var idx = forms.customer.foundset.newRecord(false); // add as last record
// forms.customer.foundset.newRecord(); // adds as first record
// forms.customer.foundset.newRecord(2); //adds as second record
if (idx >= 0) // returned index is -1 in case of failure 
{
	forms.customer.foundset.some_column = "some text";
	application.output("added on position " + idx);
	// when adding at the end of the foundset, the returned index
	// corresponds with the size of the foundset
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRecord-Number|class=node}{tr:id=name}{td}h6.newRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}newRecord{span}{span:id=iets|style=float: left;}\(index){span}{td}{tr}{tr:id=des}{td}{sub-section:newRecord-Number_des|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_des|trigger=none|class=sIndent}Create a new record in the foundset and change selection to it. Returns \-1 if the record can't be made.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRecord-Number_snc|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:newRecord-Number_prs|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_prs|trigger=none|class=sIndent}\{[Number]} index -- the new record is added at specified index.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:newRecord-Number_ret|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_ret|trigger=none|class=sIndent}[Number] -- int index of new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRecord-Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRecord-Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRecord-Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Number_sam|trigger=none}{code:language=javascript}
// foreign key data is only filled in for equals (=) relation items 
var idx = forms.customer.foundset.newRecord(false); // add as last record
// forms.customer.foundset.newRecord(); // adds as first record
// forms.customer.foundset.newRecord(2); //adds as second record
if (idx >= 0) // returned index is -1 in case of failure 
{
	forms.customer.foundset.some_column = "some text";
	application.output("added on position " + idx);
	// when adding at the end of the foundset, the returned index
	// corresponds with the size of the foundset
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRecord-Number_Boolean|class=node}{tr:id=name}{td}h6.newRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}newRecord{span}{span:id=iets|style=float: left;}\(index, changeSelection){span}{td}{tr}{tr:id=des}{td}{sub-section:newRecord-Number_Boolean_des|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_Boolean_des|trigger=none|class=sIndent}Create a new record in the foundset. Returns \-1 if the record can't be made.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRecord-Number_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:newRecord-Number_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_Boolean_prs|trigger=none|class=sIndent}\{[Number]} index -- the new record is added at specified index.
\{[Boolean]} changeSelection -- when true the selection is changed to the new record.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:newRecord-Number_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:newRecord-Number_Boolean_ret|trigger=none|class=sIndent}[Number] -- int index of new record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRecord-Number_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Number_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRecord-Number_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Number_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRecord-Number_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord-Number_Boolean_sam|trigger=none}{code:language=javascript}
// foreign key data is only filled in for equals (=) relation items 
var idx = forms.customer.foundset.newRecord(false); // add as last record
// forms.customer.foundset.newRecord(); // adds as first record
// forms.customer.foundset.newRecord(2); //adds as second record
if (idx >= 0) // returned index is -1 in case of failure 
{
	forms.customer.foundset.some_column = "some text";
	application.output("added on position " + idx);
	// when adding at the end of the foundset, the returned index
	// corresponds with the size of the foundset
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=omitRecord|class=node}{tr:id=name}{td}h6.omitRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}omitRecord{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:omitRecord_des|text=|trigger=button}{sub-section}{sub-section:omitRecord_des|trigger=none|class=sIndent}Omit current record, to be shown with loadOmittedRecords.
If the foundset is in multiselect mode, all selected records are omitted (when no index parameter is used).

Note: The omitted records list is discarded when these functions are executed: loadAllRecords, loadRecords(dataset), loadRecords(sqlstring), invertRecords(){sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:omitRecord_snc|text=|trigger=button}{sub-section}{sub-section:omitRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:omitRecord_prs|text=|trigger=button}{sub-section}{sub-section:omitRecord_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:omitRecord_ret|text=|trigger=button}{sub-section}{sub-section:omitRecord_ret|trigger=none|class=sIndent}[Boolean] -- boolean true if all records could be omitted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:omitRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:omitRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:omitRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecord_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.omitRecord();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=omitRecord-Number|class=node}{tr:id=name}{td}h6.omitRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}omitRecord{span}{span:id=iets|style=float: left;}\(index){span}{td}{tr}{tr:id=des}{td}{sub-section:omitRecord-Number_des|text=|trigger=button}{sub-section}{sub-section:omitRecord-Number_des|trigger=none|class=sIndent}Omit record under the given index, to be shown with loadOmittedRecords.
If the foundset is in multiselect mode, all selected records are omitted (when no index parameter is used).

Note: The omitted records list is discarded when these functions are executed: loadAllRecords, loadRecords(dataset), loadRecords(sqlstring), invertRecords(){sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:omitRecord-Number_snc|text=|trigger=button}{sub-section}{sub-section:omitRecord-Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:omitRecord-Number_prs|text=|trigger=button}{sub-section}{sub-section:omitRecord-Number_prs|trigger=none|class=sIndent}\{[Number]} index -- The index of the record to omit.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:omitRecord-Number_ret|text=|trigger=button}{sub-section}{sub-section:omitRecord-Number_ret|trigger=none|class=sIndent}[Boolean] -- boolean true if all records could be omitted.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:omitRecord-Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecord-Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:omitRecord-Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecord-Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:omitRecord-Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecord-Number_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.omitRecord();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=relookup|class=node}{tr:id=name}{td}h6.relookup{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}relookup{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:relookup_des|text=|trigger=button}{sub-section}{sub-section:relookup_des|trigger=none|class=sIndent}Perform a relookup for the current records
Lookups are defined in the dataprovider (columns) auto\-enter setting and are normally performed over a relation upon record creation.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:relookup_snc|text=|trigger=button}{sub-section}{sub-section:relookup_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:relookup_prs|text=|trigger=button}{sub-section}{sub-section:relookup_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:relookup_ret|text=|trigger=button}{sub-section}{sub-section:relookup_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:relookup_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:relookup_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:relookup_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.relookup(1);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=relookup-Number|class=node}{tr:id=name}{td}h6.relookup{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}relookup{span}{span:id=iets|style=float: left;}\(index){span}{td}{tr}{tr:id=des}{td}{sub-section:relookup-Number_des|text=|trigger=button}{sub-section}{sub-section:relookup-Number_des|trigger=none|class=sIndent}Perform a relookup for the record under the given index
Lookups are defined in the dataprovider (columns) auto\-enter setting and are normally performed over a relation upon record creation.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:relookup-Number_snc|text=|trigger=button}{sub-section}{sub-section:relookup-Number_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:relookup-Number_prs|text=|trigger=button}{sub-section}{sub-section:relookup-Number_prs|trigger=none|class=sIndent}\{[Number]} index -- record index (1\-based)
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:relookup-Number_ret|text=|trigger=button}{sub-section}{sub-section:relookup-Number_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:relookup-Number_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup-Number_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:relookup-Number_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup-Number_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:relookup-Number_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup-Number_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.relookup(1);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeFoundSetFilterParam|class=node}{tr:id=name}{td}h6.removeFoundSetFilterParam{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}removeFoundSetFilterParam{span}{span:id=iets|style=float: left;}\(name){span}{td}{tr}{tr:id=des}{td}{sub-section:removeFoundSetFilterParam_des|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParam_des|trigger=none|class=sIndent}Remove a named foundset filter.
Use clear() or loadAllRecords() to make the filter effective.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:removeFoundSetFilterParam_snc|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParam_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:removeFoundSetFilterParam_prs|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParam_prs|trigger=none|class=sIndent}\{[String]} name -- String filter name.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:removeFoundSetFilterParam_ret|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParam_ret|trigger=none|class=sIndent}[Boolean] -- true if removing the filter succeeded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:removeFoundSetFilterParam_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeFoundSetFilterParam_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:removeFoundSetFilterParam_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeFoundSetFilterParam_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:removeFoundSetFilterParam_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeFoundSetFilterParam_sam|trigger=none}{code:language=javascript}
var success = forms.customer.foundset.removeFoundSetFilterParam('custFilter');// removes all filters with this name
forms.customer.foundset.loadAllRecords();//to make param(s) effective
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=newRecordsearch|class=node}{tr:id=name}{td}h6.newRecordsearch{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}newRecordsearch{span}{span:id=iets|style=float: left;}\(\[location\], \[changeSelection\]){span}{td}{tr}{tr:id=des}{td}{sub-section:newRecordsearch_des|text=|trigger=button}{sub-section}{sub-section:newRecordsearch_des|trigger=none|class=sIndent}Create a new record in the foundsetStart the database search and use the results, returns the number of records, make sure you did "find" function first.
Clear results from previous searches.

Note: Omitted records are automatically excluded when performing a search \- meaning that the foundset result by default will not include omitted records.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:newRecordsearch_snc|text=|trigger=button}{sub-section}{sub-section:newRecordsearch_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-showshow:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:newRecordsearch_prs|text=|trigger=button}{sub-section}{sub-section:newRecordsearch_prs|trigger=none|class=sIndent}\[location\] -- a boolean or number when true the new record is added as the topmost record, when a number, the new record is added at specified index ; defaults to 1.
\{[Boolean]} \[changeSelection\] -- when true the selection is changed to the new record; defaults to true.
{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:newRecordsearch_ret|text=|trigger=button}{sub-section}{sub-section:newRecordsearch_ret|trigger=none|class=sIndent}[Number] -- int index of new record.the recordCount{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:newRecordsearch_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecordsearch_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:newRecordsearch_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecordsearch_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:newRecordsearch_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:newRecord_sam|trigger=none}{code:language=javascript}
// foreign key data is only filled in for equals (=) relation items 
var idx = forms.customer.foundset.newRecord(false); // add as last record
// forms.customer.foundset.newRecord(); // adds as first record
// {sub-section:search_sam|trigger=none}{code:language=javascript}
var recordCount = forms.customer.foundset.newRecordsearch(2);
//adds as second record
if (idx >= 0) // returned index is -1 in case of failure 
{
	var recordCount = forms.customer.foundset.some_column = "some text";
	application.output("added on position " + idxsearch(false,false); 	// when adding at the end of the foundset, the returned index
	// corresponds with the size of the foundset
}to extend foundset
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=omitRecordsearch-Boolean|class=node}{tr:id=name}{td}h6.omitRecordsearch{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[BooleanNumber]{span}{span:id=iets|style=float: left; font-weight: bold;}omitRecordsearch{span}{span:id=iets|style=float: left;}\(\[index\]clearLastResults){span}{td}{tr}{tr:id=des}{td}{sub-section:omitRecordsearch-Boolean_des|text=|trigger=button}{sub-section}{sub-section:omitRecordsearch-Boolean_des|trigger=none|class=sIndent}OmitStart currentthe recorddatabase orsearch theand recorduse under the given indexresults, to be shown with loadOmittedRecords.
If returns the foundsetnumber is in multiselect mode, all selected records are omitted (when no index parameter is used)of records, make sure you did "find" function first.
Reduce results from previous searches.

Note: The omittedOmitted records listare isautomatically discardedexcluded when these functions are executed: loadAllRecords, loadRecords(dataset), loadRecords(sqlstring), invertRecords()performing a search \- meaning that the foundset result by default will not include omitted records.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:omitRecordsearch-Boolean_snc|text=|trigger=button}{sub-section}{sub-section:omitRecordsearch-Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:omitRecordsearch-Boolean_prs|text=|trigger=button}{sub-section}{sub-section:omitRecordsearch-Boolean_prs|trigger=none|class=sIndent}\{[index\Boolean]} clearLastResults -- boolean, indexclear ofprevious recordsearch, todefault omit.true
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:omitRecordsearch-Boolean_ret|text=|trigger=button}{sub-section}{sub-section:omitRecordsearch-Boolean_ret|trigger=none|class=sIndent}[BooleanNumber] -- boolean true if all records could be omitted.the recordCount{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:omitRecordsearch-Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecordsearch-Boolean_see|trigger=none}[.loadOmittedRecords|JSFoundset#loadOmittedRecords]\\ {sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:omitRecordsearch-Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecordsearch-Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:omitRecordsearch-Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:omitRecordsearch-Boolean_sam|trigger=none}{code:language=javascript}
var success recordCount = forms.customer.foundset.search();
//var recordCount = forms.customer.foundset.omitRecordsearch(false,false); //to extend foundset
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=relookupsearch-Boolean_Boolean|class=node}{tr:id=name}{td}h6.relookupsearch{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void[Number]{span}{span:id=iets|style=float: left; font-weight: bold;}relookupsearch{span}{span:id=iets|style=float: left;}\(\[index\]clearLastResults, reduceSearch){span}{td}{tr}{tr:id=des}{td}{sub-section:relookupsearch-Boolean_Boolean_des|text=|trigger=button}{sub-section}{sub-section:relookupsearch-Boolean_Boolean_des|trigger=none|class=sIndent}Perform a relookup for the current record or the record under the given index
Lookups are defined in the dataprovider (columns) auto\-enter setting and are normally performed over a relation upon record creationStart the database search and use the results, returns the number of records, make sure you did "find" function first.

Note: Omitted records are automatically excluded when performing a search \- meaning that the foundset result by default will not include omitted records.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:relookupsearch-Boolean_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:relookupsearch-Boolean_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:relookupsearch-Boolean_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:relookupsearch-Boolean_Boolean_prs|trigger=none|class=sIndent}\[index\]{[Boolean]} clearLastResults -- boolean, clear previous search, default true
\{[Boolean]} reduceSearch -- record index (1\-based)
 boolean, reduce (true) or extend (false) previous search results, default true
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:relookupsearch-Boolean_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:relookupsearch-Boolean_Boolean_ret|trigger=none|class=sIndent}void[Number] -- the recordCount{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:relookupsearch-Boolean_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookup:search-Boolean_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:relookupsearch-Boolean_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookupsearch-Boolean_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:relookupsearch-Boolean_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:relookupsearch-Boolean_Boolean_sam|trigger=none}{code:language=javascript}
var recordCount = forms.customer.foundset.relookup(1);search();
//var recordCount = forms.customer.foundset.search(false,false); //to extend foundset
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=removeFoundSetFilterParamselectRecord|class=node}{tr:id=name}{td}h6.removeFoundSetFilterParamselectRecord{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}removeFoundSetFilterParamselectRecord{span}{span:id=iets|style=float: left;}\(namepkid1, \[pkid2\], \[pkidn\]){span}{td}{tr}{tr:id=des}{td}{sub-section:removeFoundSetFilterParamselectRecord_des|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParamselectRecord_des|trigger=none|class=sIndent}Remove a named foundset filter.
Use clear() or loadAllRecords() to make the filter effectiveSelect the record based on pk data.
Note that if the foundset has not loaded the record with the pk, selectrecord will fail.

In case of a table with a composite key, the pk sequence must match the alphabetical 
ordering of the pk column names.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:removeFoundSetFilterParamselectRecord_snc|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParamselectRecord_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:removeFoundSetFilterParamselectRecord_prs|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParam_prs|trigger=none|class=sIndent}\{[String]} name:selectRecord_prs|trigger=none|class=sIndent}pkid1 -- primary key
\[pkid2\] -- second primary key (in case of composite primary key)
\[pkidn\] -- Stringnth filterprimary name.key
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:removeFoundSetFilterParamselectRecord_ret|text=|trigger=button}{sub-section}{sub-section:removeFoundSetFilterParamselectRecord_ret|trigger=none|class=sIndent}[Boolean] -- true if removing the filter succeeded, false otherwise.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:removeFoundSetFilterParamselectRecord_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeFoundSetFilterParamselectRecord_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:removeFoundSetFilterParamselectRecord_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeFoundSetFilterParamselectRecord_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:removeFoundSetFilterParamselectRecord_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:removeFoundSetFilterParamselectRecord_sam|trigger=none}{code:language=javascript}
var
success = forms.customer.foundset.removeFoundSetFilterParam('custFilter'selectRecord(pkid1,pkid2,pkidn);//pks must be removesalphabetically allset! filtersIt withis thisalso name
forms.customer.foundset.loadAllRecords();//to make param(s) effectivepossible to use an array as parameter.
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=searchsetDataProviderValue|class=node}{tr:id=name}{td}h6.searchsetDataProviderValue{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Number]void{span}{span:id=iets|style=float: left; font-weight: bold;}searchsetDataProviderValue{span}{span:id=iets|style=float: left;}\(\[clearLastResults\]dataProviderID, \[reduceSearch\]value){span}{td}{tr}{tr:id=des}{td}{sub-section:searchsetDataProviderValue_des|text=|trigger=button}{sub-section}{sub-section:searchsetDataProviderValue_des|trigger=none|class=sIndent}Start the database search and use the results, returns the number of records, make sure you did "find" function first.

Note: Omitted records are automatically excluded when performing a search \- meaning that the foundset result by default will not include omitted records|class=sIndent}Set a value based on a dataprovider name.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:searchsetDataProviderValue_snc|text=|trigger=button}{sub-section}{sub-section:searchsetDataProviderValue_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:searchsetDataProviderValue_prs|text=|trigger=button}{sub-section}{sub-section:searchsetDataProviderValue_prs|trigger=none|class=sIndent}\{[clearLastResults\String]} dataProviderID -- boolean,data clear previous search, default trueprovider name
\{[reduceSearch\Object]} value -- boolean,value reduce (true) or extend (false) previous search results, default trueto set
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:searchsetDataProviderValue_ret|text=|trigger=button}{sub-section}{sub-section:searchsetDataProviderValue_ret|trigger=none|class=sIndent}[Number] -- the recordCountvoid{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:searchsetDataProviderValue_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:searchsetDataProviderValue_see|trigger=none}[.find|JSFoundset#find]\\ {sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:searchsetDataProviderValue_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:searchsetDataProviderValue_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:searchsetDataProviderValue_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:searchsetDataProviderValue_sam|trigger=none}{code:language=javascript}
var
recordCount = forms.customer.foundset.search();
//var recordCount = forms.customer.foundset.search(false,false); //to extend foundsetsetDataProviderValue('contact_name','mycompany');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=selectRecordsetSelectedIndex|class=node}{tr:id=name}{td}h6.selectRecordsetSelectedIndex{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]void{span}{span:id=iets|style=float: left; font-weight: bold;}selectRecordsetSelectedIndex{span}{span:id=iets|style=float: left;}\(pkid1, \[pkid2\], \[pkidn\]index){span}{td}{tr}{tr:id=des}{td}{sub-section:selectRecordsetSelectedIndex_des|text=|trigger=button}{sub-section}{sub-section:selectRecord_des|trigger=none|class=sIndent}Select the record based on pk data.
Note that if the foundset has not loaded the record with the pk, selectrecord will fail.

In case of a table with a composite key, the pk sequence must match the alphabetical 
ordering of the pk column namessetSelectedIndex_des|trigger=none|class=sIndent}Set the current record index.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:selectRecordsetSelectedIndex_snc|text=|trigger=button}{sub-section}{sub-section:selectRecordsetSelectedIndex_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:selectRecordsetSelectedIndex_prs|text=|trigger=button}{sub-section}{sub-section:selectRecordsetSelectedIndex_prs|trigger=none|class=sIndent}pkid1 -- primary key
\[pkid2\] \{[Number]} index -- secondindex primaryto keyset (in case of composite primary key)
\[pkidn\] -- nth primary key1\-based)
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:selectRecordsetSelectedIndex_ret|text=|trigger=button}{sub-section}{sub-section:selectRecordsetSelectedIndex_ret|trigger=none|class=sIndent}[Boolean] -- true if succeeded.void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:selectRecordsetSelectedIndex_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:selectRecordsetSelectedIndex_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:selectRecordsetSelectedIndex_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:selectRecordsetSelectedIndex_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:selectRecordsetSelectedIndex_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:selectRecordsetSelectedIndex_sam|trigger=none}{code:language=javascript}
//gets the current record index in the current foundset
var current = forms.customer.foundset.selectRecordgetSelectedIndex(pkid1,pkid2,pkidn);
//pkssets mustthe benext alphabetically set! It is also possible to use an array as parameter.record in the foundset
forms.customer.foundset.setSelectedIndex(current+1);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setDataProviderValuesetSelectedIndexes|class=node}{tr:id=name}{td}h6.setDataProviderValuesetSelectedIndexes{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setDataProviderValuesetSelectedIndexes{span}{span:id=iets|style=float: left;}\(dataProviderID, valueindexes){span}{td}{tr}{tr:id=des}{td}{sub-section:setDataProviderValuesetSelectedIndexes_des|text=|trigger=button}{sub-section}{sub-section:setDataProviderValuesetSelectedIndexes_des|trigger=none|class=sIndent}Set athe valueselected based on a dataprovider namerecords indexes.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setDataProviderValuesetSelectedIndexes_snc|text=|trigger=button}{sub-section}{sub-section:setDataProviderValuesetSelectedIndexes_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setDataProviderValuesetSelectedIndexes_prs|text=|trigger=button}{sub-section}{sub-section:setDataProviderValuesetSelectedIndexes_prs|trigger=none|class=sIndent}\{[Object]\[String]} dataProviderIDindexes -- dataAn providerarray name
\{[Object]} value -- valuewith indexes to set.
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setDataProviderValuesetSelectedIndexes_ret|text=|trigger=button}{sub-section}{sub-section:setDataProviderValuesetSelectedIndexes_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setDataProviderValuesetSelectedIndexes_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setDataProviderValuesetSelectedIndexes_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setDataProviderValuesetSelectedIndexes_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setDataProviderValuesetSelectedIndexes_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setDataProviderValuesetSelectedIndexes_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setDataProviderValuesetSelectedIndexes_sam|trigger=none}{code:language=javascript}
var current = forms.customer.foundset.setDataProviderValue('contact_name','mycompany'getSelectedIndexes();
var newSelection = new Array();
newSelection[0] = current[0];
forms.customer.foundset.setSelectedIndexes(newSelection);
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setSelectedIndexsort-String|class=node}{tr:id=name}{td}h6.setSelectedIndexsort{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setSelectedIndexsort{span}{span:id=iets|style=float: left;}\(indexsortString){span}{td}{tr}{tr:id=des}{td}{sub-section:setSelectedIndexsort-String_des|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexsort-String_des|trigger=none|class=sIndent}Set the current record indexsIndent}Sorts the foundset based on the given sort string.
TIP: You can use the Copy button in the developer Select Sorting Fields dialog to get the needed syntax string for the desired sort fields/order.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setSelectedIndexsort-String_snc|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexsort-String_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setSelectedIndexsort-String_prs|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexsort-String_prs|trigger=none|class=sIndent}\{[NumberString]} indexsortString -- indexthe tospecified setcolumns (1\-basedand sort order)
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setSelectedIndexsort-String_ret|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexsort-String_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setSelectedIndexsort-String_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSelectedIndexsort-String_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setSelectedIndexsort-String_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSelectedIndexsort-String_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setSelectedIndexsort-String_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSelectedIndexsort-String_sam|trigger=none}{code:language=javascript}
//gets the current record index in
the current foundset
var current = forms.customer.foundset.getSelectedIndexsort();
//sets the next record in the foundset
forms.customer.foundset.setSelectedIndex(current+1'columnA desc,columnB asc');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setSelectedIndexessort-String_Boolean|class=node}{tr:id=name}{td}h6.setSelectedIndexessort{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}setSelectedIndexessort{span}{span:id=iets|style=float: left;}\(indexessortString, defer){span}{td}{tr}{tr:id=des}{td}{sub-section:setSelectedIndexessort-String_Boolean_des|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexes_des|trigger=none|class=sIndent}Set the selected records indexessort-String_Boolean_des|trigger=none|class=sIndent}Sorts the foundset based on the given sort string.
TIP: You can use the Copy button in the developer Select Sorting Fields dialog to get the needed syntax string for the desired sort fields/order.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setSelectedIndexessort-String_Boolean_snc|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexessort-String_Boolean_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setSelectedIndexessort-String_Boolean_prs|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexessort-String_Boolean_prs|trigger=none|class=sIndent}\{[Object]\[String]} sortString -- the specified columns (and sort order)
\{[Boolean]} indexesdefer -- An array with indexes to set when true, the "sortString" will be just stored, without performing a query on the database (the actual sorting will be deferred until the next data loading action).
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setSelectedIndexessort-String_Boolean_ret|text=|trigger=button}{sub-section}{sub-section:setSelectedIndexessort-String_Boolean_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setSelectedIndexessort-String_Boolean_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSelectedIndexessort-String_Boolean_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setSelectedIndexessort-String_Boolean_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSelectedIndexessort-String_Boolean_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setSelectedIndexessort-String_Boolean_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setSelectedIndexessort-String_Boolean_sam|trigger=none}{code:language=javascript}
var current = forms.customer.foundset.getSelectedIndexessort();
var newSelection = new Array();
newSelection[0] = current[0];
forms.customer.foundset.setSelectedIndexes(newSelection'columnA desc,columnB asc');
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=sort-Function|class=node}{tr:id=name}{td}h6.sort{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}sort{span}{span:id=iets|style=float: left;}\(sortString/recordComparator, \[defer\]comparator){span}{td}{tr}{tr:id=des}{td}{sub-section:sort-Function_des|text=|trigger=button}{sub-section}{sub-section:sort-Function_des|trigger=none|class=sIndent}Sorts the foundset based on the given sort string or record comparator function.
TIP: You can use the Copy button in the developer Select Sorting Fields dialog to get the needed syntax string for the desired sort fields/order. 
The comparator function is called to compare
two records, that are passed as arguments, and
it will return \-1/0/1 if the first record is less/equal/greater
then the second record.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:sort-Function_snc|text=|trigger=button}{sub-section}{sub-section:sort-Function_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:sort-Function_prs|text=|trigger=button}{sub-section}{sub-section:sort-Function_prs|trigger=none|class=sIndent}sortString/recordComparator -- the specified columns (and sort order) or record comparator function
\{[BooleanFunction]} \[defer\]comparator -- whenrecord true, the "sortString" will be just stored, without performing a query on the database (the actual sorting will be deferred until the next data loading action).
comparator function
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:sort-Function_ret|text=|trigger=button}{sub-section}{sub-section:sort-Function_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:sort-Function_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:sort-Function_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:sort-Function_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:sort-Function_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:sort-Function_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:sort-Function_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.sort('columnA desc,columnB asc');

forms.customer.foundset.sort(mySortFunction);


function mySortFunction(r1, r2)
{
	var o = 0;
	if(r1.id < r2.id)
	{
		o = -1;
	}
	else if(r1.id > r2.id)
	{
		o = 1;
	}
	return o;
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=unrelate|class=node}{tr:id=name}{td}h6.unrelate{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[JSFoundsetJSFoundSet]{span}{span:id=iets|style=float: left; font-weight: bold;}unrelate{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:unrelate_des|text=|trigger=button}{sub-section}{sub-section:unrelate_des|trigger=none|class=sIndent}Create a new unrelated foundset that is a copy of the current foundset.
If the current foundset is not related, no copy will made.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:unrelate_snc|text=|trigger=button}{sub-section}{sub-section:unrelate_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:unrelate_prs|text=|trigger=button}{sub-section}{sub-section:unrelate_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:unrelate_ret|text=|trigger=button}{sub-section}{sub-section:unrelate_ret|trigger=none|class=sIndent}[JSFoundsetJSFoundSet] -- FoundSet unrelated foundset.{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:unrelate_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:unrelate_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:unrelate_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:unrelate_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:unrelate_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:unrelate_sam|trigger=none}{code:language=javascript}
forms.customer.foundset.unrelate();
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}