Recent Posts

Pages: [1] 2 3 ... 10
1
Help for ParamQuery Pro / Re: Multi-selection fails with initial selection
« Last post by paramvir on July 03, 2026, 05:25:51 pm »
Please use grid.Range() API instead of setSelection.

Code: [Select]
        grid.Range({
            r1: 0,
            c1: 0,
            firstR:0,
            firstC:0
        }).select();

Ref: https://paramquery.com/pro/api#method-Range
2
Help for ParamQuery Pro / Multi-selection fails with initial selection
« Last post by Mikael Andersen on July 02, 2026, 07:11:54 pm »
Hi at pqgrid,

We experienced a problem with initial selection being set and the use of "Shift+click" to do multi-cell selection.
Its reproducable in demo following these steps,

* Open demo: https://paramquery.com/pro/demos/grid_parts
* Insert this line after creating grid, f.x. on line 102: grid.setSelection({ rowIndx: 0, colIndx: 0})
* Run (top, leftmost cell is selected as expected)
* Hold shift and click on a different cell to do a block selection

Nothing happens and this error is displayed in console:
Uncaught TypeError: can't access property "r1", n is undefined
    resize https://paramquery.com/pro2/content/js11.2.0/pqgrid.min.js?4:32
    resizeOrReplace https://paramquery.com/pro2/content/js11.2.0/pqgrid.min.js?4:32
    onCellMouseEnter https://paramquery.com/pro2/content/js11.2.0/pqgrid.min.js?4:32
  ...
3
pqgrid v11.2.0 Release Notes

Official jQuery 4 Support
  • This release introduces full compatibility with jQuery 4.0+, ensuring that pqgrid remains at the forefront of the evolving web ecosystem.
  • pqselect also introduces official support for jQuery 4.0+ in this cycle.
  • Developers can now leverage the performance enhancements of the latest jQuery core without worrying about library conflicts or legacy overhead.

Expanded Named and Locale-Sensitive Formatting
  • The grid now supports sophisticated formatting tokens such as Fixed, Standard, Short Date, Long Date, and Time, allowing for high-level abstraction of data presentation.
  • This formatting intelligence is fully integrated into the data lifecycle, extending beyond the UI to impact copy-paste operations, Excel/PDF/HTML/CSV exports, and data imports.
  • By adhering to locale-sensitive standards, the grid automatically adjusts displays for international audiences, ensuring that a "Short Date" is intuitively rendered and processed based on the user's regional settings.

Smart Inbuilt Format Picker UI
  • A new, context-aware Format Picker has been added to the standard toolbar, providing an out-of-the-box solution for end-user customization.
  • The UI dynamically detects the data type of the active cell—whether it is a number, date, or timestamp—and presents relevant formatting options accordingly.
  • This "Smart" picker allows users to toggle between currency styles, decimal precision, and various date-time strings on the fly, significantly reducing the need for custom developer-built configuration menus.
  • Note that this feature and associated API is available in Ultimate and OEM variants only

API enhancements
  • More inbuilt controls are added directly to the toolbar.items option. This provides an easier and declarative way to initialize the toolbar.
  • More useful and convenient ways to initialize the context menu are now available. More properties added to context menu items.
  • Key navigation is enhanced with an Enter mode similar to Excel. This mode allows all 4 arrow keys to be used to navigate out of an editing cell.

Native ECMAScript Modules (ESM) Support
  • This version introduces official ESM support via dedicated .mjs module files, allowing for modern development workflows and seamless integration into modern bundlers (such as Vite, Webpack 5, and Rollup) and native browser ESM support.
  • ESM distribution bundles are now included out of the box as .mjs files for pqgrid, jquery-ui-pack, pqselect, pqtouch and localization providing clean JavaScript imports and compatibility with optimized modern production pipelines.
Localization
  • New localization files for more regions have been added
  • More localization strings have been added
  • Use *.mjs localization files in ESM environment

4
Help for ParamQuery Pro / Re: Wrap Content Behaviour
« Last post by paramvir on June 18, 2026, 09:31:04 pm »
CLearing the row height cache fixes the issue.

Code: [Select]
this.option('wrap', evt.target.checked);
//clear the row height cache before changing wrap of whole grid.
this.pageData().forEach(function(rd) {
    delete rd.pq_ht
})
this.refresh();
5
Help for ParamQuery Pro / Wrap Content Behaviour
« Last post by vijay on June 17, 2026, 06:54:45 pm »
Hello Paramveer,

We are using the Wrap Content functionality in the ParamQuery Grid. We have observed that when we deselect the Wrap Content option, the row unwraps; however, some rows are not refreshed properly.

Kindly check the attached file for your reference. Also, please review the code provided below.

Check the 5th row in the Screenshot.

var data = [{
        rank: 1,
        company: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum',
        revenues: 339938.0,
        profits: 36130.0
    },
    {
        rank: 2,
        company: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum',
        revenues: 315654.0,
        profits: 11231.0
    },
    {
        rank: 3,
        company: 'Royal Dutch Shell',
        revenues: 306731.0,
        profits: 25311.0
    },
    {
        rank: 4,
        company: 'BP',
        revenues: 267600.0,
        profits: 22341.0
    },
    {
        rank: 5,
        company: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum',
        revenues: 192604.0,
        profits: -10567.0
    },
    {
        rank: 6,
        company: 'Chevron',
        revenues: 189481.0,
        profits: 14099.0
    },
    {
        rank: 7,
        company: 'DaimlerChrysler',
        revenues: 186106.3,
        profits: 3536.3
    },
    {
        rank: 8,
        company: 'Toyota Motor',
        revenues: 185805.0,
        profits: 12119.6
    },
    {
        rank: 9,
        company: 'Ford Motor',
        revenues: 177210.0,
        profits: 2024.0
    },
    {
        rank: 10,
        company: 'ConocoPhillips',
        revenues: 166683.0,
        profits: 13529.0
    },
    {
        rank: 11,
        company: 'General Electric',
        revenues: 157153.0,
        profits: 16353.0
    },
    {
        rank: 12,
        company: 'Total',
        revenues: 152360.7,
        profits: 15250.0
    },
    {
        rank: 13,
        company: 'ING Group',
        revenues: 138235.3,
        profits: 8958.9
    },
    {
        rank: 14,
        company: 'Citigroup',
        revenues: 131045.0,
        profits: 24589.0
    },
    {
        rank: 15,
        company: 'AXA',
        revenues: 129839.2,
        profits: 5186.5
    },
    {
        rank: 16,
        company: 'Allianz',
        revenues: 121406.0,
        profits: 5442.4
    },
    {
        rank: 17,
        company: 'Volkswagen',
        revenues: 118376.6,
        profits: 1391.7
    },
    {
        rank: 18,
        company: 'Fortis',
        revenues: 112351.4,
        profits: 4896.3
    },
    {
        rank: 19,
        company: 'Crédit Agricole',
        revenues: 110764.6,
        profits: 7434.3
    },
    {
        rank: 20,
        company: 'American Intl. Group',
        revenues: 108905.0,
        profits: 10477.0
    }
];

function items() {
    return [{
            name: "Wrap",
            disabled: (this.Selection().style("white-space") == "normal"),
            action: function() {
                this.Selection().style("white-space", "normal");
            }
        },
        {
            name: "No wrap",
            disabled: (this.Selection().style("white-space") == "nowrap"),
            action: function() {
                this.Selection().style({
                    "white-space": "nowrap",
                    "text-overflow": "ellipsis",
                    "overflow": "hidden"
                });
            }
        }
    ];
}

var obj = {
    width: "80%",
    height: 400,
    resizable: true,
    title: "Grid From JSON",
    showBottom: false,
    showTitle: false,
    scrollModel: {
        autoFit: true
    },
    dataModel: {
        data: data
    },
    colModel: [{
            title: "Rank",
            width: 100,
            dataType: "integer",
            dataIndx: "rank"
        },
        {
            title: "Company with very very very very very very very very very long title",
            width: 220,
            dataType: "string",
            dataIndx: "company"
        },
        {
            title: "Revenues",
            width: 180,
            dataType: "float",
            dataIndx: "revenues",
            styleHead: {
                'font-style': 'italic'
            }
        },
        {
            title: "Profits",
            width: 160,
            dataType: "float",
            dataIndx: "profits"
        }
    ],
    toolbar: {
        style: 'text-align:center;',
        items: [{
                type: 'checkbox',
                value: true,
                label: 'Wrap for all body cells',
                listener: function(evt) {
                    this.option('wrap', evt.target.checked);
                    this.refresh();
                }
            },
            {
                type: 'checkbox',
                label: 'Wrap for all header cells',
                listener: function(evt) {
                    this.option('hwrap', evt.target.checked);
                    this.refresh();
                }
            },
            {
                type: 'fullscreen'
            }
        ]
    },
    contextMenu: {
        on: true,
        cellItems: items
    }
};

pq.grid("#grid_json", obj);
6
Bug Report / Re: v11.1.0 Ctrl-C throws an error
« Last post by paramvir on June 05, 2026, 10:18:02 pm »
Because this security restriction is enforced directly by the browser engine (Chromium, WebKit, Gecko) rather than the grid framework, it is unfortunately impossible to implement a workaround within the software itself. If the site is served over
Code: [Select]
http:// (and is not localhost), the browser completely removes the
Code: [Select]
navigator.clipboard object from the global window scope for security reasons.

However, since you are in a local development/testing environment, you can easily bypass this browser restriction using one of the following solutions:

Solution 1: Enable the Insecure Origin Flag in Chrome/Edge (Easiest for testing) 
You can explicitly tell your browser to treat your specific local HTTP URL as a secure context.

  • Open Chrome or Edge and navigate to:
    Code: [Select]
    chrome://flags/#unsafely-treat-insecure-origin-as-secure (or
    Code: [Select]
    edge://flags/#unsafely-treat-insecure-origin-as-secure)
  • Change the dropdown to Enabled.
  • In the text box provided, paste your local server's URL (e.g., http://your-local-server-ip:port).
  • Relaunch the browser. The clipboard API will now work seamlessly on that specific address.

Solution 2: Map the Remote Server to Localhost via SSH 
If you have SSH access to that server, you can map its web port directly to your machine. This tricks the browser into seeing it as a local site:

  • Run the following command in your local terminal:
    Code: [Select]
    ssh -L 8080:localhost:80 user@remote-server-ip
    • You can then access the site in your browser via http://localhost:8080. Because it uses the "localhost" hostname, the browser automatically unlocks the clipboard API.
    Moving forward, modern web security models require either a secure context (HTTPS/localhost) or explicit browser flag exceptions for applications utilizing clipboard, camera, geolocation, or crypto APIs.
7
Bug Report / Re: v11.1.0 Ctrl-C throws an error
« Last post by TonyLeech on June 05, 2026, 06:33:16 pm »
Understood.  I'm using http in a local site environment but from a different server so I don't think I can use localhost.

Are you planning a workaround to allow this in future or are we now locked into https requirement?
8
Bug Report / Re: v11.1.0 Ctrl-C throws an error
« Last post by paramvir on June 05, 2026, 05:38:31 pm »
Copy and paste functionality in recent versions of ParamQuery Grid relies on the modern
Code: [Select]
navigator.clipboard API. The error "Cannot read properties of undefined (reading 'write')" explicitly indicates that the browser is blocking access to this API.

To resolve this issue, please ensure the following environment requirements are met:

  • Use HTTPS or Localhost: Modern browsers restrict the Clipboard API strictly to Secure Contexts. The
Code: [Select]
navigator.clipboard object will be undefined if your application is running over standard
Code: [Select]
http:// on a remote server or IP address. It will only function over
Code: [Select]
https:// or
Code: [Select]
http://localhost
    for local development.
  • Keep Document Focus: The browser requires active page focus to modify the clipboard. If your cursor or focus is currently inside the Browser Developer Tools (Console/Elements panel) while you press Ctrl+C, the operation will fail. Make sure to click inside the grid cells before testing the shortcut.
9
Bug Report / v11.1.0 Ctrl-C throws an error
« Last post by TonyLeech on June 05, 2026, 05:07:57 pm »
Hi Paramvir, I'm upgrading my grids to the latest version (v11.1.0) but it no longer performs copy with Ctrl-C.  It's throwing the following error...

pqgrid.min.js:13 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'write')
    at Object.copy (pqgrid.min.js:13:97225)
copy @ pqgrid.min.js:13
await in copy
copy @ pqgrid.min.js:13
onCopy @ pqgrid.min.js:13
(anonymous) @ pqgrid.min.js:13

Paste with Ctrl-V is working ok, but only with data previously in the clipboard.  Nothing new gets added with Ctrl-C.


10
Thx, behavior in demo seems consistent with the before mentioned tools. Amazing. Thank you :)
Pages: [1] 2 3 ... 10