jqGrid is a popular jQuery Plugin for displaying and editing data in tabular form. It has some other more sophisticated features, like subgrids, TreeGrids, grouping and so on.
jqGrid was developed originally by Tony Tomov and it was available under MIT/GPL-licenses till the version 4.7.0 published Dec 8, 2014 (see here). Short time after that the license agreement was changed (see here) and new 4.7.1 version was published.
The code from the GitHib repository is the fork of jqGrid 4.7.0 - the latest version available under MIT/GPL-licenses. It will be provided under MIT/GPL-licenses.
Below you can find short description of new features and the bug fixes implemented in free jqGrid 4.15.0 (compared with version 4.14.1). The version is developed by Oleg Kiriljuk, alias Oleg on the stackoverflow and OlegK on trirand forum.
Read Wiki for more detailed information about the features of free-jqGrid. The preliminary version of the documentation can be found here.
Free jqGrid can be used for free. We still ask to contribute the development by donating via PayPal, if one have the possibility for it. One can donate by clicking on the following button 
One can install the package with respect of npm by using "npm install free-jqgrid", with respect of bower by using "bower install free-jqgrid" or from NuGet by using "Install-Package free-jqGrid".
The package is published on WebJars too and it's deployed to Maven Central.
Free jqGrid is is available from jsDelivr CDN and cdnjs. Thus one can use it directly from Internet by including for example the URLs like
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.0/css/ui.jqgrid.min.css">
<script src="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.0/js/jquery.jqgrid.min.js"></script>or
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.0/css/ui.jqgrid.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.0/jquery.jqgrid.min.js"></script>The locale file is optional. One can, but one don't need to include grid.locale-en.min.js, because the same information is already included in the jquery.jqgrid.min.js (or jquery.jqgrid.src.js).
If somebody want to test the latest version of free jqGrid, one can load it directly from GitHib using RawGit service:
<link rel="stylesheet" href="https://rawgit.com/free-jqgrid/jqGrid/master/css/ui.jqgrid.css">
<script src="https://rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js"></script>All other language files and plugins are available from CDN too. See the wiki article for more details about the usage of free jqGrid from CDNs and RawGit.
Remark: the above URLs will be available after publishing the release of the version of 4.15.0.
- New methods
rotateColumnHeadersallow to rotate the column headers to -90 degree. It could be practical to hold the grid compact in case of usage columns with small conent like checkboxes. Such columns could have header, which text is longer the the checkboxes. If one need to display many such columns then ratation of the column headers of such columns can essentially reduce the width od the grid and to improve the visibility. The CSS of the column resizer is changed to have better results in medern web browsers. The old Internet Explorer calculate wrong height of resizer with the new settings. The methodresetColumnResizerHeightfixs the height of column resizer in IE. It will be automatically called inrotateColumnHeadersnear to the end. I still not sure that recalculation of the height of the resize in IE should be done in other situations. Because of that I made the method public. - New options milti-sorting option (
multiSort: true):showSortOrder,multiSortOrderandformatSortOrder. The default behavior of multisorting is changed. It uses now new options by default. The optionshowSortOrder: truefollows deiplaying of small 1-based index of sorting near the column header. It visualize the order of sorting columns. See the comment of the commit for more detailed information. - New multiselect options
maxSortColumnsandsortOrderPositionare added. New numeric optionmaxSortColumnswith default value 3 allows to reduce the total number of column by which the grid could be sorted. It works only in case of usagemultiSortOrder: "lastClickedFirstSorted"option. If the user clicks of the 4th column header andmaxSortColumnsis 3 then the column with the 4th sorting index will be removed and the grid will be sorted by 3 columns maximal. Such behavir simplify for the user removing of sorting by unneed columns. New optionsortOrderPositionwith two allowed values"afterSortIcons"and"beforeSortIcons"provides more customization possibilities. Default value is"afterSortIcons", butsortOrderPosition: "beforeSortIcons"could be interesing, for example, in case of combination withsortIconsBeforeTex. The optionmultiSortOrdercould be used as callback function additionally to the usage as"lastClickedFirstSorted"or"lastClickedLastSorted". The callback has now only oneoptionsparameter withsortNames,cm,sortDirsandremoveSortingproperties. New propertyremoveSortingis the function, which can be used bymultiSortOrdercallback to remove some column from sorting. As I mention above, the optionmaxSortColumnsworks only in case of usagemultiSortOrder: "lastClickedFirstSorted". If the callback want to implement close behavior it should be able to remove sorting order. In the case it can calloptions.removeSortingfunction with the element ofoptions.sortNames` array as parameter. - Cell editing is extended. On can use now cell editing in combined with
multiselect: true. One cannoCellSelection: trueto change the default behavior of cell editing and to replace cell celection to selection of rows.
The default value of autoencode option is changed to autoencode: true. Such changes could have minor compatibility issue, but the comfort of usage for new users seems be more important. New setting autoencode: true is important to prevent Cross Site Scipting (XSS) by default.
- Fix/extend
free-jqgrid.d.tsto describe more full all existing options, methods and events - Fix calculation of alert position of form editing if no
alerttopandalertleftspecified - Bug fix for correct deleting of row in cell editing mode
- Fix the code of
rotateColumnHeadersto work on columns, which has notautoResizable:trueproperty - Fix
sortGridto usesortDatacorrectly (the first parameter) - Some bug fixes in working with frozen columns
- Add
deluianddeltextoptions ofdelGridRow. New options allows to display div with some information like"Deleting..."during Ajax request to delete row(s). See the issue #365 for more details. - Fix selection in multiselct mode if used in combination with cell editing and if checkbox of multiselect is clicked during cell editing in the line
- Fix working with prefix/suffix in
filterToolbarin case of currency formatter - Fix typing error in the name of internaly use function: from
moveVericaltomoveVertical - Improve formatting of the code of the old plugin
ui.multiselect.js - Change default value for
autoencodeoption from the old valuefalsetotrue. Such changes could have compatibility issue, but I think that the comfort for new users is more important. New settingautoencode: trueis important to prevent Cross Site Scipting (XSS) by default. - Fix unneeded border if the first hidden row of grouping headers in Bootstrap
- Fix CSS rules: improve alignment of the editing elements of jqGrid
- Remove "shaking" of grid with frozen columns during start of cell editing
- Fixes in row selection logic in combination with cell editing
- Fix the height of rows during cell editing when frozen columns be editing
- Improve the code of
$.jgrid.parseDatefor better upwards compatibility. See the comment for the commit for more details. - Add Boolean
selectOnContextMenuoption, which allows to prevent row selection on contextmenu (right mouse click). One can use the optionselectOnContextMenu: falseto prevent selection of the row on contextmenu (right mouse click) before call ofonRightClickRowcallback orjqGridRightClickRowevent. One can still select the row, if needed, inside the callback (or inside the event) by call ofsetSelectionmethod. - Make the code of
getLocalRowmethod mode safe - Inctroduce new Boolean option
noCellSelection, which can be combined with cell editing - Bug fix of
setAttributesfunction ofcreateElto prevent settinggenerateValueandpostDataas DOM attributes - Fix applying
itemIconSpanStyleanditemAnchorStyleoptions for jQuery UI menu without ancors - Bug fix in the code of
changeRowidmethod to refresh_indexafter chaning of id - Fix: remove transparence of btable used in frozen div of Bootstrap
- Add first version of implementation of new methods
rotateColumnHeadersandresetColumnResizerHeight - Add new multiselect options
maxSortColumns,sortOrderPosition. Change default value ofmultiSortOrderand the options ofmultiSortOrdercallback. See the comment of the commit for more detailes. - Fix the usage of the
indexparameter of internaldataSortfunction - Fix the bug in
refreshIndexif one use wrong input parameters:loadonce:truewith localdatatype - Some preliminary changes in auto-resizing for new property in
colModel:rotated: true - Fix: make the code of
setFrozenColumnsmore safe (prevent exception) - Fix the problem with asyncronous processing in latest versions of jQuery
- Fix
setFrozenColumnsto be more safe for exceptions in case of usagesortableoption - Add new options of milti-sorting implemented:
showSortOrder,multiSortOrderandformatSortOrder. See the comment of the commit for more detailed information. - Fix CSS inline styles of column header in case of usage labelAlign:"right" or labelAlign:"likeData"
- Fix detection of IE web browser
- Move some CSS settings of groupped header (ui-th-column-header) from JavaScript code to CSS
- Add DefinitelyTyped package in devDependencies of bower.json
- Change options used by TypeScript compiler to use "es2015", "es2017" and "dom"
- Change CSS rules of
.ui-jqgrid-resizeto hold 100% height of the resizer div, adjust the code ofsetGroupHeaders - Bug fix in vertical scrolling during cell editing
- Fix title of formatter:"select" in
setRowData - Fix processing of formatter:"select", edittype: "select" during navigation in Add/Edit forms
- Initialize
thisas DOM of grid in sorttype defined as function - Allow to specify classes with custom icons for TreeGrid nodes. The
iconproperty of input data of TreeGrid already could specify the custom class of leafs of TreeGrid. The changes allows to specify custom icons of nodes of TreeGrid too. The nodes displays one from two icons depend on the state of the node (expanded or collapsed). Theiconproperty can now specify the two icons, which need be comma separated. For example, one can useicon: "ui-icon-folder-open,ui-icon-folder-collapsed"in case of using jQuery UI icons. - Fix the URLs to jsdelivr.net CDN
- Fix uglify option to hold license comment in minimized files
Other old readmes contain the list of the features and bug fixed implemented in previous versions of free jqGrid:
- README4.14.1.md contains the readme of free jqGrid 4.14.1.
- README4.14.0.md contains the readme of free jqGrid 4.14.0.
- README4.13.6.md contains the readme of free jqGrid 4.13.6.
- README4.13.5.md contains the readme of free jqGrid 4.13.5.
- README4.13.4.md contains the readme of free jqGrid 4.13.4.
- README4.13.3.md contains the readme of free jqGrid 4.13.3.
- README4.13.2.md contains the readme of free jqGrid 4.13.2.
- README4.13.1.md contains the readme of free jqGrid 4.13.1.
- README4.13.0.md contains the readme of free jqGrid 4.13.0.
- README4.12.1.md contains the readme of free jqGrid 4.12.1.
- README4.12.0.md contains the readme of free jqGrid 4.12.0.
- README4.11.1.md contains the readme of free jqGrid 4.11.1.
- README4.11.0.md contains the readme of free jqGrid 4.11.0.
- README4.10.0.md contains the readme of free jqGrid 4.10.0.
- README492.md contains the readme of free jqGrid 4.9.2.
- README491.md contains the readme of free jqGrid 4.9.1.
- README49.md contains the readme of free jqGrid 4.9.0.
- README48.md contains the readme of free jqGrid 4.8.0.
Many thanks to all, who sent bug reports and suggestions to improve free jqGrid!