Skip to content

Data grid 2 settings written by their widget key are lost on a describe → exec round trip, and check without a project calls them "silently dropped" #1573

Open

Description

@stagknee

Repro (v0.27.0 and current main; Mendix 11.12.5)

create persistent entity Shop.GridPref (Config: String(unlimited));
create page Shop.Ord_Local ( Title: 'Orders', Layout: Atlas_Core.Atlas_Default ) {
  datagrid dgLocal (DataSource: database Shop.Ord, refreshInterval: 30, columnsHidable: false,
                    configurationStorageType: localStorage, storeFiltersInPersonalization: true) {
    column (Attribute: Code) { textfilter tf }
  }
};
create page Shop.Ord_Attr ( Title: 'Orders', Layout: Atlas_Core.Atlas_Default, Params: { $Pref: Shop.GridPref } ) {
  dataview dvPref (DataSource: $Pref) {
    datagrid dgAttr (DataSource: database Shop.Ord, configurationStorageType: attribute, configurationAttribute: Config) {
      column (Attribute: Code) { textfilter tf2 }
    }
  }
};

check -p passes, and it even applies the editor-config rules: columnsHidable: false together with a column Hidable: no is refused (MDL-WIDGET10). exec stores every value, and mx check reports 0 errors. Two things go wrong after that.

  1. describe page prints none of these settings. It prints datagrid dgLocal (DataSource: database from Shop.Ord). A describe → drop → exec round trip therefore resets them to the defaults. On a five-grid test page set, 0 of 6 pages came back byte-identical. The same is true for Gallery's settings, a column's own settings and the emptyPlaceholder slot. A Studio Pro marketplace page (Administration.Account_Overview) also loses onClickTrigger: 'double'.
  2. check without a project (mxcli check pers.mdl, as make check-mdl runs it) warns, for each of these keys, that the property "is not recognized and will be silently dropped on write" (MDL-WIDGET07), although exec stores it. For an expression-typed key, such as rowClass or a column's columnClass, it is an MDL-WIDGET42 error, so check exits 1. The cause is that DATAGRID has no embedded definition, since its .def.json is generated from the project's package. Without a project, the keyword falls back to the static-widget vocabulary.

These settings include the personalization ones (where to store column, sort and filter state), which is a common thing to want to set from MDL.

Also found (not fixed in the PRs below)

  • By-key selection is not stored. itemSelection: Single by key is stored as PrimitiveValue 'Single' with Selection: None, so the grid has no selection. Selection: Single works. This looks like the explicit-key pass treating a selection-typed key as a primitive.
  • Other widgets lose by-key settings on describe the same way. Combobox (clearable, showFooter), textfilter (adjustable, delay), dropdownfilter (filterable) and image (isBackgroundImage) all accept them in check and exec, and describe drops them. Each has its own describe branch.

I have two PRs ready, one per gap, and will link them.

Activity

  1. github-actions commented on Oct 17, 2026

    @github-actions

    Issue Triage

    Summary:
    Data‑grid‑2 settings defined by widget keys are lost when running describe → exec and mxcli check without a project incorrectly reports them as “silently dropped” (or errors for expression‑typed keys).

    Checklist of required bug‑report information

    Required info Present? Details
    mxcli version ✅ v0.27.0 and current main mentioned
    Mendix version ✅ 11.12.5
    Scenario (what was tried) ✅ MDL script with create persistent entity, create page, commands check -p, exec, describe page
    Expected output ✅ Settings should be preserved in describe output and check should not warn/error
    Experienced output ✅ describe omits settings; check warns (MDL‑WIDGET07) or errors (MDL‑WIDGET42)
    AI bug report (session log or mxcli diag --bundle) ❌ Not provided

    Missing information:
    Please attach the session log or run mxcli diag --bundle and share the resulting archive (or relevant log excerpt) so we can reproduce the environment and see any internal traces.

    Thank you for the detailed reproduction steps! Once we have the diagnostic bundle we’ll be able to investigate further.


    Automated triage via OpenRouter — workflow source

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions