bulk-widget-updates · git:20260821.ff81a24 · 2026-08-21 · sha256 6496fc55bd52f849
bulk-widget-updates git:20260821.ff81a24A
Immutable. This exact content is served forever at /api/v1/blob/6496fc55bd52f849.
--- name: bulk-widget-updates description: "Discover and bulk-change widget properties across many pages with SHOW WIDGETS and UPDATE WIDGETS. Use when the same widget setting has to change on many pages at once. Experimental — always DRY RUN first and back the project up." --- # Bulk Widget Property Updates > **EXPERIMENTAL**: These commands are an untested proof-of-concept. > Always use `dry run` first and backup your project before applying changes. Use `show widgets` and `update widgets` to discover and modify widget properties across pages and snippets in bulk. **When to use which tool:** | Scope | Tool | |-------|------| | One page, one or several related changes | `alter page` — see `alter-page` | | Many pages matched by `WHERE` filter (across one or more modules) | `update widgets` (this skill) | `alter page` is the right call for targeted, page-specific edits — it can combine `set`/`insert`/`drop`/`replace` in a single block. `update widgets` is for cross-page patterns like "set `Class` on every Container in `MyMod`" where naming each page explicitly would be tedious or error-prone. ## Prerequisites Widget commands require a full catalog build: ```sql refresh catalog full; ``` ## SHOW WIDGETS - Discover Widgets ### Basic Usage ```sql -- Show all widgets show widgets; -- Filter by module show widgets in MyModule; -- Filter by widget type (case-insensitive LIKE) show widgets where widgettype like '%combobox%'; -- Filter by name show widgets where Name = 'myGrid'; -- Combine filters show widgets where widgettype like '%DataGrid%' and Name like '%Overview%' in MyModule; ``` ### Output Columns | Column | Description | |--------|-------------| | NAME | Widget name (may be auto-generated) | | WIDGET TYPE | Full widget type ID (e.g., `com.mendix.widget.web.combobox.Combobox`) | | CONTAINER | Page or snippet qualified name | | MODULE | Module name | ### Common Widget Type Patterns | Pattern | Matches | |---------|---------| | `%combobox%` | ComboBox widgets | | `%datagrid%` | DataGrid2 and related widgets | | `%textbox%` | TextBox widgets | | `%dropdown%` | DropDown widgets | | `%gallery%` | Gallery widgets | ## UPDATE WIDGETS - Modify Properties ### Syntax ```sql update widgets set 'propertyName' = value [, 'propertyName' = value ...] where condition [and condition ...] [in module] [dry run]; ``` ### Dry Run (Preview Changes) Always preview changes first: ```sql -- See what would change without modifying update widgets set 'showLabel' = false where widgettype like '%combobox%' dry run; ``` Output shows: ``` found 5 widget(s) in 3 container(s) matching the criteria [dry run] The following changes would be made: Would set 'showLabel' = false on combobox1 (combobox) in MyModule.OrderForm Would set 'showLabel' = false on combobox2 (combobox) in MyModule.CustomerPage ... [dry run] Would update 5 widget(s) run without dry run to apply changes. ``` ### Apply Changes Remove `dry run` to apply: ```sql update widgets set 'showLabel' = false where widgettype like '%combobox%' in MyModule; ``` ### Property Value Types | Type | Examples | |------|----------| | String | `'contains'`, `'above'` | | Number | `4`, `100`, `3.14` | | Boolean | `true`, `false` | | Null | `null` | ### Examples ```sql -- Hide labels on all comboboxes update widgets set 'showLabel' = false where widgettype like '%combobox%'; -- Set multiple properties update widgets set 'showLabel' = false, 'labelWidth' = 4 where widgettype like '%textbox%' in MyModule; -- Change filter mode on DataGrid filters update widgets set 'filterMode' = 'contains' where widgettype like '%DatagridTextFilter%'; ``` ## Important Notes ### Known Limitations (Experimental) **UPDATE WIDGETS functionality is not fully implemented.** - The DRY RUN mode shows which widgets would be matched - Actual property updates require additional implementation work - Use SHOW WIDGETS for discovery, then manually update properties in Studio Pro ### After Making Changes 1. Refresh the catalog to see updated data: ```sql refresh catalog full force; ``` 2. Open the project in Studio Pro to verify changes ### Supported Properties Only primitive properties (string, number, boolean) are supported: - `showLabel`, `labelWidth`, `placeholder` - `filterMode`, `defaultValue` - Widget-specific configuration properties NOT supported: - DataSource properties - Action properties (onClick, etc.) - Nested object properties - Expression properties ### Finding Property Names To find the correct property names: 1. Create a widget in Studio Pro 2. Use `describe page Module.PageName` to see widget structure 3. Or check the Mendix widget documentation ## Workflow Example ```sql -- 1. Build catalog refresh catalog full; -- 2. Discover widgets show widgets where widgettype like '%combobox%'; -- 3. Preview changes update widgets set 'showLabel' = false where widgettype like '%combobox%' dry run; -- 4. Apply changes update widgets set 'showLabel' = false where widgettype like '%combobox%'; -- 5. Rebuild catalog refresh catalog full force; -- 6. Verify show widgets where widgettype like '%combobox%'; ```