======
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 mostly by Tony Tomov in the past and it was available under MIT/GPL-licences 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-licences. It will be provided under MIT/GPL-licences.
Below you can find short description of new features implemented in free jqGrid 4.9 (compared with version 4.8). 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.
Free jqGrid can be used for free. You can still donate by sending money via Paypal to oleg.kiriljuk@ok-soft-gmbh.com with the comment "free jqGrid".
One can install the package with respect of bower by using "bower install free-jqgrid", with respect of npm by using "npm install free-jqgrid" or from NuGet by using "Install-Package free-jqGrid".
The repository is included on cdnjs. So one can include CSS by using
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.9.0/css/ui.jqgrid.css">
If you skip http:
and https:
prefix in the URL then the prefix of the current page will be used. In the same way you can access JavaScript files by
<script src="//cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.9.0/js/jquery.jqgrid.min.js"></script>
or
<script src="//cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.9.0/js/jquery.jqgrid.src.js"></script>
All language files are available in js/i18n
sub-folder and plugins under plugins
sub-folder. For example
<script src="//cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.9.0/js/i18n/grid.locale-de.js"></script>
In the same way free jqGrid can be loaded from jsDelivr CDN too (see here).
<link rel="stylesheet" href="//cdn.jsdelivr.net/free-jqgrid/4.9.0/css/ui.jqgrid.css">
<script src="//cdn.jsdelivr.net/free-jqgrid/4.9.0/js/i18n/grid.locale-de.js"></script>
<script src="//cdn.jsdelivr.net/free-jqgrid/4.9.0/js/jquery.jqgrid.min.js"></script>
It somebody want to test the latest version of free jqGrid one can load it directly from GitHib using RawGit service:
<link rel="stylesheet" href="//rawgit.com/free-jqgrid/jqGrid/master/css/ui.jqgrid.css">
<script src="//rawgit.com/free-jqgrid/jqGrid/master/js/i18n/grid.locale-de.js"></script>
<script src="//rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js"></script>
Remark: the above URLs will be available after publishing the release of the version of 4.9
- 99% of jQuery UI classes used in free jqGrid will be get now from
$.jgrid.guiStyles.jQueryUI
in the same way like free jqGrid 4.8 uses the icons from$.jgrid.icons.jQueryUI
by default. There are existguiStyles
option with default value"jQueryUI"
exactly like there are existiconSet
option with default value"jQueryUI"
. BothguiStyles
andiconSet
options defines from which part of$.jgrid.guiStyles
or$.jgrid.icons
the icons or classes of common GUI elements of the grid will be used. One can extend$.jgrid.guiStyles
with another set of elements and to use the name of the set as the value ofguiStyles
parameter. One can replace the default jQuery UI classes to the classes of another CSS framework. - Internal methods
addXmlData
andaddJSONData
are full rewritten now. There are exist now only onereadInput
. The part of the code is moved in$.jgrid.parseDataToHtml
which will be used inaddRowData
method too. - The performance of jqGrid is improved. The performance of reading long XML data is improved. The performance advantage take place only if no
xmlmap
defined or if it's simple likexmlmap: "nodeName"
orxmlmap: "[attributeName]"
. - Performance of jqGrid, TreeGrid, frozen columns, selection of rows, autoResizing (
autoResizeAllColumns
) and some other parts is improved. - new
additionalProperties
parameter allows to read more properties from input data. - Formatters supports now
getCellBuilder
property which allows to generates closure used for reading of input data. The reading of data in the loop (filling the grid) could required some relatively expensive initialization steps which can be relatively expansive. The propertygetCellBuilder
allows to make the initializations once and to return the short method which can be used in the loop for reading the rows of data. Such approach improves the performance of formatters. All standard formatters have nowgetCellBuilder
property. - TreeGrid is changed in many places. There are exist no more hidden columns
level
,parent
,isLeaf
,expanded
,loaded
,icon
. The information will be only saved indata
parameter of jqGrid. Free jqGrid uses the newadditionalProperties
parameter for all the TreeGrid properties. It improve the performance and reduce the size used web browser. - Frozen columns can be used now with any editing mode. The width of different rows can be different.
- Pivot module is full rewritten. Some bugs are fixed. jqPivot supports now more new options and the input data could be unsorted. See more information in the wiki article.
- multiselect (
"cb"
), subgrid ("subgrid"
) and rownumbers ("rn"
) columns can be placed now on any position in the grid. New optionmultiselectPosition
with default value"left"
can be used with"right"
value to place"cb"
columns on the right size of jqGrid. One can use new methodremapColumnsByName
to place the column on another position (in the middle of the grid) and it will be still work. - TreeGrid now supports
multiselect: true
option. - By specifying any other value of
multiselectPosition
parameter as"left"
and"right"
, for examplemultiselectPosition: "none"
, the column with checkboxs ("cb"
column) will not created at all. One can still select multiple lines. The usage ofmultiselectPosition: "none"
improve the performance of selection, compared with scenario where one creates"cb"
column, but hide it. - Resizing of columns is changed. One can resize the last column of the grid. The color of the resize is changed too. The previous version used
.ui-jqgrid .ui-jqgrid-resize-mark { background-color: #777; }
independent from the jQuery UI theme used. Starting with version 4.9 it will be used the class$.jgrid.guiStyles.[guiStyleName].resizer
, which is"ui-widget-header"
for the default guiStyleNamejQueryUI
. Thus the resizer uses the color of the border of the"ui-widget-header"
class. NewminResizingWidth
parameter (default value 10) specify the minimal width of the column after resizing. The previous versions of jqGrid used fixed value 33px before. - The new method
$.jgrid.builderSortIcons
is used now for building the sorting icons. One can replace the method to allows to set different icons for different columns. One can for example use different sorting icons for different type of sorting data (texts, numbers, dates and so on). - The new method
$.jgrid.builderFmButon
is used now for building of modal dialogs. One can use replace the method for advanced customizations of the dialogs without rewriting modules of the form editing. - The new properties
iColByName
andiPropByName
can be used now to get the index of column fromcolModel
or property from newadditionalProperties
option by name. - The new method
remapColumnsByName
are introduced. If works in the same way likeremapColumns
, but it uses column names instead of column indexes. - The methods
getGridRowById
andgetInd
used to access the rows by rowid are improved. - The method
bindKeys
is rewritten. The method can be used now with data grouping. See the answer. - The old jqModal module is changed to allows keyboard input inside of modal dialogs. See the issue free-jqgrid#59 about problems of integration of new select2 plugin in jqGrid searching and editing dialogs.
- The new option of
navGrid
is set by default totrue
. It hides unused parts of the pager and gives more place for navigator icons. It can have some compatibility problem in advanced scenarios (see the answer as an example). One can usenavOptions: { hideEmptyPagerParts: false }
of jqGrid or sethideEmptyPagerParts: false
option ofnavGrid
in such cases. - The plugin
grid.odata.js
, developed by Mark Babayev (https://github.com/mirik123, markolog@gmail.com), is updated. It providesodataGenColModel
andodataInit
methods allows easy usage of free jqGrid with OData services. - The new methods
createContexMenuFromNavigatorButtons
andshowHideColumnMenu
are added as pluginsjquery.createcontexmenufromnavigatorbuttons.js
andjquery.jqgrid.showhidecolumnmenu.js
. There will be moved later in the main code of free jqGrid. - The formatting of the source code of free jqGrid is changed to improve reading and debugging of the code.
The document contains the readme of free jqGrid 4.8.
Many thanks to all, who sent bug reports and suggestions to improve free jqGrid!