node package manager

free-jqgrid

free fork of jqGrid

npm versiondownloadstotal Bower NuGetdownloadstotal Maven Central
CDNJS jsDelivr CDN 
GitHub commits GitHub watchersGitHub forksGitHub stars devDependency status GitHub license

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 PayPayl donate button or by sending money via PayPal to oleg.kiriljuk@ok-soft-gmbh.com with the comment "free jqGrid". Bank transfer based on the invoice from OK soft GmbH is another option of donating. Just send the email with the information about the amount of donation and you will get the corresponding invoice with the full information about our bank account and our VAT number.

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 main features implemented in the version 4.15.0 compared with 4.14.1:

  • New methods rotateColumnHeaders allow 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 method resetColumnResizerHeight fixs the height of column resizer in IE. It will be automatically called in rotateColumnHeaders near 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, multiSortOrder and formatSortOrder. The default behavior of multisorting is changed. It uses now new options by default. The option showSortOrder: true follows 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 maxSortColumns and sortOrderPosition are added. New numeric option maxSortColumns with default value 3 allows to reduce the total number of column by which the grid could be sorted. It works only in case of usage multiSortOrder: "lastClickedFirstSorted" option. If the user clicks of the 4th column header and maxSortColumns is 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 option sortOrderPosition with two allowed values "afterSortIcons" and "beforeSortIcons" provides more customization possibilities. Default value is "afterSortIcons", but sortOrderPosition: "beforeSortIcons" could be interesing, for example, in case of combination with sortIconsBeforeTex. 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 can noCellSelection: true to 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.

Below one can see the full list of changes in the version 4.15.0 compared with 4.14.1:

  • Fix/extend free-jqgrid.d.ts to describe more full all existing options, methods and events
  • Fix calculation of alert position of form editing if no alerttop and alertleft specified
  • Bug fix for correct deleting of row in cell editing mode
  • Fix the code of rotateColumnHeaders to work on columns, which has not autoResizable:true property
  • Fix sortGrid to use sortData correctly (the first parameter)
  • Some bug fixes in working with frozen columns
  • Add delui and deltext options of delGridRow. 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 filterToolbar in case of currency formatter
  • Fix typing error in the name of internaly use function: from moveVerical to moveVertical
  • Improve formatting of the code of the old plugin ui.multiselect.js
  • Change default value for autoencode option from the old value false to true. Such changes could have compatibility issue, but I think that the comfort for new users is more important. New setting autoencode: true is 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.parseDate for better upwards compatibility. See the comment for the commit for more details.
  • Add Boolean selectOnContextMenu option, which allows to prevent row selection on contextmenu (right mouse click). One can use the option selectOnContextMenu: false to prevent selection of the row on contextmenu (right mouse click) before call of onRightClickRow callback or jqGridRightClickRow event. One can still select the row, if needed, inside the callback (or inside the event) by call of setSelection method.
  • Make the code of getLocalRow method mode safe
  • Inctroduce new Boolean option noCellSelection, which can be combined with cell editing
  • Bug fix of setAttributes function of createEl to prevent setting generateValue and postData as DOM attributes
  • Fix applying itemIconSpanStyle and itemAnchorStyle options for jQuery UI menu without ancors
  • Bug fix in the code of changeRowid method to refresh _index after chaning of id
  • Fix: remove transparence of btable used in frozen div of Bootstrap
  • Add first version of implementation of new methods rotateColumnHeaders and resetColumnResizerHeight
  • Add new multiselect options maxSortColumns, sortOrderPosition. Change default value of multiSortOrder and the options of multiSortOrder callback. See the comment of the commit for more detailes.
  • Fix the usage of the index parameter of internal dataSort function
  • Fix the bug in refreshIndex if one use wrong input parameters: loadonce:true with local datatype
  • Some preliminary changes in auto-resizing for new property in colModel: rotated: true
  • Fix: make the code of setFrozenColumns more safe (prevent exception)
  • Fix the problem with asyncronous processing in latest versions of jQuery
  • Fix setFrozenColumns to be more safe for exceptions in case of usage sortable option
  • Add new options of milti-sorting implemented: showSortOrder, multiSortOrder and formatSortOrder. 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-resize to hold 100% height of the resizer div, adjust the code of setGroupHeaders
  • 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 this as DOM of grid in sorttype defined as function
  • Allow to specify classes with custom icons for TreeGrid nodes. The icon property 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). The icon property can now specify the two icons, which need be comma separated. For example, one can use icon: "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:

Many thanks to all, who sent bug reports and suggestions to improve free jqGrid!