Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
myFoundset: {
foundsetId: 2, // an identifier that allows you to use this foundset via the 'foundsetRef' type;
// when a 'foundsetRef' type sends a foundset from server to client (for example
// as a return value of callServerSideApi) it will translate to this identifier
// on client (so you can use it to find the actual foundset property in the model if
// server side script put it in the model as well); internally when sending a
// 'foundset' typed property to server through a 'foundsetRef' typed argument or prop,
// it will use this foundsetId as well to find it on server
serverSize: 44, // the size of the foundset on server (so not necessarily the total record count
// in case of large DB tables)
viewPort: {
// this is the data you need to have loaded on client (just request what you need via provided
// loadRecordsAsync or loadExtraRecordsAsync)
startIndex: 15,
size: 5,
rows: [ { _svyRowId: 'someRowIdHASH1', name: "Bubu", type: 2 },
{ _svyRowId: 'someRowIdHASH2', name: "Ranger", type: 1 },
{ _svyRowId: 'someRowIdHASH3', name: "Yogy", type: 2 },
{ _svyRowId: 'someRowIdHASH4', name: "Birdy", type: 3 },
{ _svyRowId: 'someRowIdHASH5', name: "Wolfy", type: 4 } ]
},
selectedRowIndexes: [16], // array of selected records in foundset; indexes can be out of current
// viewPort as well
sortColumns: 'orderid asc', // sort string of the foundset, the same as the one used in scripting for
// foundset.sort and foundset.getCurrentSort
multiSelect: false, // the multiselect mode of the server's foundset; if this is false,
// selectedRowIndexes can only have one item in it
hasMoreRows: false, // if the foundset is large and on server-side only part of it is loaded (so
// there are records in the foundset beyond 'serverSize') this is set to true;
// in this way you know you can load records even after 'serverSize' (requesting
// viewport to load records at index serverSize-1 or greater will load more
// records in the foundset)
columnFormats: { name: (...), type: (...) }, // columnFormats is only present if you specify
// "provideColumnFormats": true inside the .spec file for this foundset property;
// it gives the default column formatting that Servoy would normally use for
// each column of the viewport - which you can then also use in the
// browser yourself
/**
* Request a change of viewport bounds from the server; the requested data will be loaded
* asynchronously in 'viewPort'
*
* @param startIndex the index that you request the first record in "viewPort.rows" to have in
* the real foundset (so the beginning of the viewPort).
* @param size the number of records to load in viewPort.
*
* @return {promise} a $q promise that will get resolved when the requested records arrived browser-
* side. As with any promise you can register success, error callbacks, finally, ...
*/
loadRecordsAsync: function(startIndex, size),
/**
* Request more records for your viewPort; if the argument is positive more records will be
* loaded at the end of the 'viewPort', when negative more records will be loaded at the beginning
* of the 'viewPort' - asynchronously.
*
* @param negativeOrPositiveCount the number of records to extend the viewPort.rows with before or
* after the currently loaded records.
* @param dontNotifyYet if you set this to true, then the load request will not be sent to server
* right away. So you can queue multiple loadLess/loadExtra before sending them
* to server.
*
* @return {promise} a $q promise that will get resolved when the requested records arrived browser-
* side. As with any promise you can register success, error callbacks, finally, ...
* That allows custom component to make sure that loadExtra/loadLess calls from
* client do not stack on not yet updated viewports to result in wrong bounds.
*/
loadExtraRecordsAsync: function(negativeOrPositiveCount, dontNotifyYet),
/**
* Request a shrink of the viewport; if the argument is positive the beginning of the viewport will
* shrink, when it is negative then the end of the viewport will shrink - asynchronously.
*
* @param negativeOrPositiveCount the number of records to shrink the viewPort.rows by before or
* after the currently loaded records.
* @param dontNotifyYet if you set this to true, then the load request will not be sent to server
* right away. So you can queue multiple loadLess/loadExtra before sending them
* to server.
*
* @return {promise} a $q promise that will get resolved when the requested records arrived browser
* -side. As with any promise you can register success, error callbacks, finally, ...
* That allows custom component to make sure that loadExtra/loadLess calls from
* client do not stack on not yet updated viewports to result in wrong bounds.
*/
loadLessRecordsAsync: function(negativeOrPositiveCount, dontNotifyYet),
/**
* Sort the foundset by the dataproviders/columns identified by sortColumns.
*
* The name property of each sortColumn can be filled with the dataprovider name the foundset provides
* or specifies. If the foundset is used with a component type (like in table-view) then the name is
* the name of the component on who's first dataprovider property the sort should happen. If the
* foundset is used with another foundset-linked property type (dataprovider/tagstring linked to
* foundsets) then the name you should give in the sortColumn is that property's 'idForFoundset' value
* (for example a record 'dataprovider' property linked to the foundset will be an array of values
* representing the viewport, but it will also have a 'idForFoundset' prop. that can be used for
* sorting in this call; this 'idForFoundset' was added in version 8.0.3).
*
* @param {JSONArray} sortColumns an array of JSONObjects { name : dataprovider_id,
* direction : sortDirection }, where the sortDirection can be "asc" or "desc".
* @return {promise} (added in Servoy 8.2.1) a $q promise that will get resolved when the new sort
* will arrive browser-side. As with any promise you can register success, error
* and finally callbacks.
*/
sort: function(sortColumns),
/**
* Request a selection change of the selected row indexes. Returns a promise that is resolved
* when the client receives the updated selection from the server. If successful, the array
* selectedRowIndexes will also be updated. If the server does not allow the selection change,
* the reject function will get called with the 'old' selection as parameter.
*
* If requestSelectionUpdate is called a second time, before the first call is resolved, the
* first call will be rejected and the caller will receive the string 'canceled' as the value
* for the parameter serverRows.
* E.g.: foundset.requestSelectionUpdate([2,3,4]).then(function(serverRows){},function(serverRows){});
*/
requestSelectionUpdate : function(selectedRowIdxs),
/**
* Sets the preferred viewPort options hint on the server for this foundset, so that the next
* (initial or new) load will automatically return that many rows, even without any of the loadXYZ
* methods above being called.
*
* You can use this when the component size is not known initially and the number of records the
* component wants to load depends on that. As soon as the component knows how many it wants
* initially it can call this method.
*
* These can also be specified initially using the .spec options "initialPreferredViewPortSize" and
* "sendSelectionViewportInitially". But these can be altered at runtime via this method as well
* because they are used/useful in other scenarios as well, not just initially: for example when a
* related foundset changes parent record, when a search/find is performed and so on.
*
* @param preferredSize the preferred number or rows that the viewport should get automatically
* from the server.
* @param {boolean} sendViewportWithSelection if this is true, the auto-sent viewport will contain
* the selected row (if any).
* @param {boolean} centerViewportOnSelected if this is true, the selected row will be in the middle
* of auto-sent viewport if possible. If it is false, then
* the foundset property type will assume a 'paging'
* strategy and will send the page that contains the
* selected row (here the page size is assumed to be
* preferredSize).
*/
setPreferredViewportSize: function(preferredSize, sendViewportWithSelection, centerViewportOnSelected),
/**
* Add a change listener that is interested in knowing of any incoming changes (from server)
* for this foundset property. See the "Adding a change listener" section below for more information.
*/
addChangeListener : function(listener),
/**
* Removes the given change listener from this foundset property.
*/
removeChangeListener: function(listener),
/**
* Receives a client side record (taken from foundset viewport) and gives a record reference, a complete object
* which can be resolved server side to the exact record, for example when calling a handler and want to send
* record as parameter. This has been added in Servoy 8.3
*/
getRecordRef: function(record)
} |
...
Overview
Content Tools
Activity