Hello,
we are using dropdown devex component, where we are facing an issue.
There is “valuelist” property same as servoy dropdown component. Now by default 500 records are coming and there is few more records even after and so when we type then data should be come which is actually after 500, like happening in servoy dropdown but not happening for our component. So can you please guide that what needs to be trigger or call any event/API to achieve it?
Hi,
easiest thing to do is to load valuelist yourself using SQL before displaying dropdown. (Servoy dynamic loading is limited to 500 values & only shows others when set to ‘typeahead’)
If values don’t change often, do it in onSolutionOpen
If they do, do it in ‘onShow’ of form
something like
var query1 = "SELECT description FROM stock WHERE archived = 0 AND item_number IS NOT NULL ORDER BY item_number";
var dataset1 = databaseManager.getDataSetByQuery ( server_name, query1, null, 10000 );
var displayDataArray = dataset1.getColumnAsArray ( 1 );
var query2 = "SELECT stockid FROM stock WHERE archived = 0 AND item_number IS NOT NULL ORDER BY item_number";
var dataset2 = databaseManager.getDataSetByQuery ( server_name, query2, null, 10000 );
var realDataArray = dataset2.getColumnAsArray ( 1 );
application.setValueListItems ( 'valuelistname', displayDataArray, realDataArray );
if you only need display values, just use one query and parameter
rafig:
Hi,
easiest thing to do is to load valuelist yourself using SQL before displaying dropdown. (Servoy dynamic loading is limited to 500 values & only shows others when set to ‘typeahead’)
If values don’t change often, do it in onSolutionOpen
If they do, do it in ‘onShow’ of form
something like
var query1 = "SELECT description FROM stock WHERE archived = 0 AND item_number IS NOT NULL ORDER BY item_number";
var dataset1 = databaseManager.getDataSetByQuery ( server_name, query1, null, 10000 );
var displayDataArray = dataset1.getColumnAsArray ( 1 );
var query2 = "SELECT stockid FROM stock WHERE archived = 0 AND item_number IS NOT NULL ORDER BY item_number";
var dataset2 = databaseManager.getDataSetByQuery ( server_name, query2, null, 10000 );
var realDataArray = dataset2.getColumnAsArray ( 1 );
application.setValueListItems ( 'valuelistname', displayDataArray, realDataArray );
if you only need display values, just use one query and parameter
Rafi
Better to do it in one query:
var query1 = "SELECT stockid, description FROM stock WHERE archived = 0 AND item_number IS NOT NULL ORDER BY item_number";
var dataset1 = databaseManager.getDataSetByQuery ( server_name, query1, null, 10000 );
var realDataArray = dataset1.getColumnAsArray ( 1 );
var displayDataArray = dataset1.getColumnAsArray ( 2 );
But thing is that we are using and pointing direct database table.
And same approach we are using thoroughly in our application mostly. So what to do now can you please suggest?
If you are using your own component here, I think you will have to take care of loading the next block of records your self, I am not sure how to do.
Maybe someone from Servoy can answer this better for you.