Announcement

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

    Screen reader mode - DataSource updateData causes exception

    Hi,

    When screen reader mode is enabled and a row is selected and focused in a ListGrid, then using updateData() to update a record in the underlying data source causes the following exception:
    Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is no longer a child of this node. Perhaps it was moved in a 'blur' event handler?
    at _3.isc_Canvas__updateParentHTML [as $p9] (ISC_Core.js:15133:170)
    at _3.isc_c_Class_invokeSuper [as invokeSuper] (ISC_Core.js:621:15)
    at _3.isc_GridRenderer__updateParentHTML [as $p9] (ISC_Grids.js:305:1008)
    at _3.isc_Canvas__updateHTML [as $ra] (ISC_Core.js:15119:19)
    at _3.isc_Canvas_redraw [as redraw] (ISC_Core.js:15108:186)
    at _3.isc_c_Class_invokeSuper [as invokeSuper] (ISC_Core.js:621:15)
    at _3.isc_GridRenderer_redraw [as redraw] (ISC_Grids.js:719:412)
    at _3.isc_c_Class_invokeSuper [as invokeSuper] (ISC_Core.js:621:15)
    at _3.isc_GridBody_redraw [as redraw] (ISC_Grids.js:850:23)
    at _3.isc_ListGrid_refreshRow [as refreshRow] (ISC_Grids.js:2459:54)
    at _3.isc_ListGrid__dataChanged [as $253v] (ISC_Grids.js:1243:6)
    at _3.isc_ListGrid_dataChanged [as dataChanged] (ISC_Grids.js:1213:88)
    at _3.<anonymous> (ISC_Grids.js:1181:287)
    at _3.observation [as dataChanged] (ISC_Core.js:746:382)
    at _3.isc_ResultSet__doneChangingData [as $ee] (ISC_DataBinding.js:12953:29)
    at _3.isc_ResultSet_handleUpdate [as handleUpdate] (ISC_DataBinding.js:12950:33)
    at _3.isc_ResultSet_dataSourceDataChanged [as dataSourceDataChanged] (ISC_DataBinding.js:12944:6)
    at _3.eval (eval at isc__makeFunction (ISC_Core.js:161:1135), <anonymous>:4:10)
    at _3.thunk (ISC_Core.js:752:28)
    at _3.observation [as dataChanged] (ISC_Core.js:746:382)
    at _3.isc_DataSource_updateCaches [as updateCaches] (ISC_DataBinding.js:2541:6)
    at Object.isc_c_DataSource_handleUpdate [as handleUpdate] (ISC_DataBinding.js:955:4)
    at _3.isc_DataSource_fireResponseCallbacks [as fireResponseCallbacks] (ISC_DataBinding.js:4278:16)
    at _3.isc_DataSource__completeResponseProcessing [as $38b] (ISC_DataBinding.js:4253:6)
    at _3._6 (ISC_DataBinding.js:2922:6)
    at _3.isc_DataSource__handleClientOnlyReply [as $50e] (ISC_DataBinding.js:2928:4)
    at _3.isc_c_Class_fireCallback [as fireCallback] (ISC_Core.js:654:102)
    at _3.isc_Class_fireCallback [as fireCallback] (ISC_Core.js:893:89)
    at _3.isc_c_RPCManager_fireReplyCallback [as __fireReplyCallback] (ISC_DataBinding.js:12279:77)
    at $wnd.isc.RPCManager.fireReplyCallback (SmartGwtEntryPoint.java:508:1)
    at _3.isc_c_RPCManager_fireReplyCallbacks [as fireReplyCallbacks] (ISC_DataBinding.js:12285:120)
    at _3.isc_c_RPCManager_completeOperationReply [as completeOperationReply] (ISC_DataBinding.js:12257:6)
    at _3.isc_c_RPCManager_performOperationReply [as performOperationReply] (ISC_DataBinding.js:12253:13)
    at _3.isc_c_RPCManager__performTransactionReply [as $39d] (ISC_DataBinding.js:12095:26)
    at _3.isc_c_Class_fireCallback [as fireCallback] (ISC_Core.js:654:102)
    at _3.isc_c_Timer__fireTimeout [as $in] (ISC_Core.js:7399:6)
    at ISC_Core.js:7392:40

    Tested using 'v14.1p_2026-04-24/Pro Deployment', in the latest version of the Chrome browser.

    Test case code:
    Code:
    @Override
        public void onModuleLoad()
        {
            SC.setScreenReaderMode(true);
    
            DataSource ds = new DataSource();
            ds.setClientOnly(true);
            DataSourceField dsField = new DataSourceField("Field", FieldType.TEXT);
            DataSourceField dsField2 = new DataSourceField("Field2", FieldType.TEXT);
            dsField.setPrimaryKey(true);
            ds.setFields(dsField, dsField2);
    
            Record record = new Record();
            record.setAttribute("Field", "Value");
            record.setAttribute("Field2", "Value2");
            ds.setCacheData(record);
    
            ListGrid grid = new ListGrid();
            grid.setDataSource(ds);
            grid.fetchData();
    
            Scheduler.get().scheduleFixedDelay(() ->
            {
                grid.selectRecord(0);
                grid.focusInRow(0);
    
                Record updatedRecord = new Record();
                updatedRecord.setAttribute("Field", "Value");
                updatedRecord.setAttribute("Field2", "Value3");
    
                ds.updateData(updatedRecord);
    
                return false;
            }, 2000);
    
    
            grid.draw();
        }

    #2
    Thanks for the report - we see the issue and a fix has been applied.

    Please retest with a build dated May 1 or later.

    Comment

    Working...
    X