No announcement yet.
  • Filter
  • Time
Clear All
new posts

    Updating ComboBoxItem optionDataSource

    I'm using SmartClient_v121p_2020-04-14_PowerEdition. I have a form with a ComboBoxItem defined, where the ComboBoxItem is backed by a client only DataSource. Upon load of the application, I query the DB and set the data in the DataSource. Example code below:

    let comboDS = isc.DataSource.create({
       ID: "comboDS",
       field: [
          {name: "id", primaryKey: true},
          {name: "item_name"},
          {name: "category"}
       dataFormat: "json",
       clientOnly: true
    let comboForm = isc.DynamicForm.create({
       ID: "comboForm",
       width: "100%",
       height: 30,
       fields: [
          {name: "selectItem", title: "Select item", defaultValue: defaultID, width: 200, editorType: "ComboBoxItem", completeOnTab: true, 
             addUnknownValues: false,  optionDataSource: comboDS, displayField: "item_name", valueField: "id", pickListWidth: 200, autoFetchData: true,
             changed: function(form, item, value) { // do something here }
    // Get data from DB
    let comboData = getFromDB();
    This works as designed. I have a use case where the user can add another "item" in another part of the application. When this item gets successfully saved to the DB, I do the following, so that the user has the option to select that item and view details of it at a later time:

    let newItem = {id: newID, item_name: newItemName, category: "someCategory"};
    This too works great. Note that I am obfuscating what the application actually does per my company policy, so what come next may not make sense, but it's a valid use case in this application. The use case is that the system behind the application can get "reset". When this happens, I need to clear out all of the "items" from the drop down list. Once the reset is complete, I need to re-initialize from the DB, at which point all of the "new items" that were added would not be there, so would need to be removed from the ComboBox.

    On reset, I tried to set the DataSource's cached data to an empty array to clear the ComboBox. This did not work. Also, when I tried to re-initialize from the DB (same as above), the list also did not update.

    I read a post from 2012 in the forum that basically said that "Select items do not fully support having their optionDataSource modified at runtime....".

    Is this still the case? Is there not a way to modify the optionDataSource at runtime?

    Thank you.

    You can clear out the data in the DataSource with setCacheData(), but this not automatically cause a ComboBoxItem to re-fetch, just as it would not happen if the data were updated on the server side (what a clientOnly DataSource simulates). Use comboBoxItem.fetchData() to cause a new data fetch.