C1.AspNetCore.Mvc.ja 6.0.20261.462: FlexGrid does not scroll when swiped on tab

Posted by: thanhthuyeths on 11 November 2026, 3:52 am EST

  • Posted 11 November 2026, 3:52 am EST

    Dear MESCIUS Support Team,

    Thank you for your continued support.

    We are using ComponentOne for ASP.NET Core MVC. After upgrading C1.AspNetCore.Mvc.ja to the latest version, we found an issue with FlexGrid scrolling on tablets. Details are below.

    Subject

    C1.AspNetCore.Mvc.ja 6.0.20261.462: FlexGrid does not scroll when swiped on tablets (works correctly in 6.0.20252.418)

    Environment

    -C1.AspNetCore.Mvc.ja 6.0.20261.462 (Wijmo 5.20252.44); compared with 6.0.20252.418 (Wijmo 5.20251.40)

    -ASP.NET Core (.NET 10), using

    -Chrome on Android tablets; iPad (mobile user agent)

    Issue

    Swiping on a FlexGrid with a finger does not scroll the grid. In 6.0.20252.418 the grid scrolls normally. The issue does not occur on PCs or with a desktop user agent.

    Steps to reproduce

    In a minimal project, place one without frozen-columns (200 rows, is-read-only=“true”, selection-mode=“Row”, height 300px). Then swipe vertically on the grid on a tablet.

    Investigation results (partly our inference)

    1. DragDropTouch in wijmo.touch registers a touchmove listener (passive:false) on document and dispatches a synthetic mousemove. If that synthetic mousemove is defaultPrevented, it calls preventDefault() on the touchmove itself.
    2. In 5.20252.44, the line n && e.isMobile() && i.preventDefault() was added at the end of _MouseHandler._mousemove.
    3. As a result, on devices where isMobile() returns true, the synthetic mousemove is canceled, DragDropTouch then cancels the touchmove, and native scrolling stops.

      Temporary workaround

      We wrapped wijmo.grid._MouseHandler.prototype._mousemove so that preventDefault is disabled only for synthetic events (isTrusted === false). We have confirmed that this restores scrolling.

    Questions

    -Is this recognized as a bug, and in which version is a fix planned?

    -Is there an officially recommended workaround?

    We look forward to your reply.

    Best regards,

    Thuyet Phan

  • Posted 11 November 2026, 4:48 am EST

    Hello Thuyet,

    Thank you for sharing the detailed information and your investigation findings.

    We have previously investigated a similar issue with FlexGrid touch scrolling in the 2026v1 release.

    As confirmed by the development team (C1WEB-30579), this behavior is related to changes introduced in the underlying Wijmo library (WJM-37817). The ‘wijmo.touch’ module handles touch interactions to avoid conflicts between scrolling and cell selection or resizing on mobile devices.

    The Wijmo team has confirmed that this is expected behavior in the updated library. Since ComponentOne ASP.NET Core MVC uses Wijmo internally, the development team has decided to retain the existing behavior, and no code changes are currently planned to restore the previous touch-scrolling behavior.

    Workaround:

    To restore normal one-finger scrolling by preventing touch events on the FlexGrid from propagating to the document-level touch handlers, try adding the following script to your page:

    document.addEventListener('DOMContentLoaded', function () {
        var grid = wijmo.Control.getControl('#grid');
    
        if (grid) {
            var touchIsolationHandler = function (e) {
                e.stopPropagation();
            };
    
            [
                'touchstart',
                'touchmove',
                'touchend',
                'touchcancel'
            ].forEach(function (type) {
                grid.hostElement.addEventListener(
                    type,
                    touchIsolationHandler,
                    { passive: true }
                );
            });
        }
    });
    

    Please replace ‘#grid’ with your FlexGrid’s actual ID.

    This workaround will restore one-finger scrolling without modifying Wijmo’s internal '_MouseHandler implementation.

    Could you please try this approach and share your observations?

    Regards,

    Uttkarsh.

  • Posted 11 November 2026, 5:40 am EST

    Hello Uttkarsh,

    Thank you for your quick reply and for providing the workaround.

    I have two follow-up questions:

    1. Scrolling without the workaround

    If we do not add the script you suggested, is there another way for users to scroll the FlexGrid on a tablet? For example, is there an existing property, setting or recommended configuration that keeps one-finger scrolling working?

    2. Request to reconsider: an official setting

    I understand that the development team has decided to keep the current behavior. However, scrolling is one of the most basic features of FlexGrid, and it worked correctly on tablets up to version 6.0.20252.418. For us, this is a regression in core functionality after upgrading.

    Our application has many screens that use FlexGrid. Adding this script to every screen, and maintaining it as we add new screens, is quite troublesome and error-prone.

    Could you please consider providing an official option, such as a FlexGrid property or a global setting, that turns this touch handling on or off (for example, to give priority to native touch scrolling)? We would also like to know whether there is any plan to provide such an option in a future release.

    Thank you again for your support. I look forward to your reply.

    Best regards,

    Thuyet Phan

  • Posted 11 November 2026, 6:53 am EST

    Hello Thuyet,

    Thank you for explaining the impact on your application. We understand your concern about maintaining the workaround across many screens.

    Without the workaround, users can scroll using two fingers. There is currently no built-in FlexGrid property or global setting to restore one-finger scrolling. As confirmed under C1WEB-30579, the development team has decided to retain the underlying Wijmo behavior, and no change is currently planned under this escalation.

    You can centralize the workaround in one shared JavaScript file, so individual screens do not need their own scripts.

    Create ‘wwwroot/js/flexgrid-touch-scroll.js’:

    (function () {
        function initializeTouchScrolling() {
            var gridSelector = '.wj-flexgrid.native-touch-scroll';
    
            function isolateGridTouches(e) {
                var target = e.target;
    
                if (target instanceof Element &&
                    target.closest(gridSelector)) {
                    e.stopPropagation();
                }
            }
    
            [
                'touchstart',
                'touchmove',
                'touchend',
                'touchcancel'
            ].forEach(function (type) {
                // Stop bubbling before events reach document-level handlers.
                document.body.addEventListener(
                    type,
                    isolateGridTouches,
                    { capture: false, passive: true }
                );
            });
        }
    
        if (document.readyState === 'loading') {
            document.addEventListener(
                'DOMContentLoaded',
                initializeTouchScrolling,
                { once: true }
            );
        } else {
            initializeTouchScrolling();
        }
    })();
    

    Reference this file once in your shared ‘_Layout.cshtml’, immediately before ‘body’ tag:

    <script src="~/js/flexgrid-touch-scroll.js" asp-append-version="true"></script>
    

    This delegates touch handling through the page body and applies the workaround to every FlexGrid, including grids added later through partial views. No grid IDs or per-screen initialization scripts are required.

    If you prefer to enable it only for selected grids, the FlexGrid Tag Helper supports the standard ‘class’ attribute, as shown in our documentation:

    <c1-flex-grid id="grid"
                  class="native-touch-scroll"
                  auto-generate-columns="true"
                  is-read-only="true">
        <c1-items-source source-collection="@Model"></c1-items-source>
    </c1-flex-grid>
    

    Then change the shared script’s selector to:

    var gridSelector = '.wj-flexgrid.native-touch-scroll';
    

    Here, the class serves as a marker for the JavaScript workaround; no additional CSS rules are needed. A custom Tag Helper attribute could also be implemented within your application, but it would still need the JavaScript handling above. Using ‘class’ avoids that extra implementation.

    Sample: FlexGrid_WijmoTouchMvcCore.zip

    Regards,

    Uttkarsh.

Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels