I recently put a svy lookupObj onto one of my forms, but I need the foundset to be confined to records where 'foundset.new_stock' = 0. On the button press I'm running in find mode (foundset.find()) and it works on initialization, but when I search in the search box it seems like foundset.loadAllRecords() is run, without the find. Does anyone know where I can edit this?
Here is my code:
- Code: Select all
function onActionAddStock(event) {
var stockFoundset = databaseManager.getFoundSet(datasources.db.cpro.stock.getDataSource())
stockFoundset.find()
stockFoundset.new_stock = 0;
var searchResult = stockFoundset.search();
if (searchResult > 0) {
var lookupObj = scopes.svyLookup.createLookup(stockFoundset);
lookupObj.setMultiSelect(true);
// add fields
lookupObj.addField('make').setTitleText('Make');
lookupObj.addField('model').setTitleText('Model');
lookupObj.addField('colour').setTitleText('Colour');
lookupObj.addField('serial_number').setTitleText('Serial Number');
// show pop-up
lookupObj.showPopUp(onSelect, elements.btnNewProduct, controller.getFormWidth(), 412);
}
}
I tried changing the search function in the abstract lookup form but it didn't seem to work:
- Code: Select all
function search(txt) {
if (foundset !== datasources.db.cpro.stock.getFoundSet()) {
//if we are using a global method valuelist:
//we need to refresh the foundset using global method
updateDataSource(txt);
// fix search disappear while typing
// searchText = txt;
// load all records if no input
if (!txt) {
foundset.loadAllRecords();
}
// create search object
var simpleSearch = scopes.svySearch.createSimpleSearch(foundset);
simpleSearch.setSearchText(txt);
// Add search providers
for (var i = 0; i < lookup.getFieldCount(); i++) {
var field = lookup.getField(i);
// TODO check if dataprovider actually exists
if (field.isSearchable() && field.getDataProvider()) {
simpleSearch.addSearchProvider(field.getDataProvider()).setAlias(field.getTitleText());
}
}
// apply search
simpleSearch.loadRecords(foundset);
} else {
var stockFoundset = datasources.db.cpro.stock.getFoundSet()
stockFoundset.find()
stockFoundset.new_stock = 0;
var searchResult = stockFoundset.search();
if (searchResult > 0) {
updateDataSource(txt);
if (!txt) {
stockFoundset.loadAllRecords();
}
simpleSearch = scopes.svySearch.createSimpleSearch(stockFoundset);
simpleSearch.setSearchText(txt);
for (i = 0; i < lookup.getFieldCount(); i++) {
field = lookup.getField(i);
// TODO check if dataprovider actually exists
if (field.isSearchable() && field.getDataProvider()) {
simpleSearch.addSearchProvider(field.getDataProvider()).setAlias(field.getTitleText());
}
}
simpleSearch.loadRecords(stockFoundset);
}
}
}
Thanks!
Alasdair