======
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 [email protected] 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.jQueryUIin the same way like free jqGrid 4.8 uses the icons from$.jgrid.icons.jQueryUIby default. There are existguiStylesoption with default value"jQueryUI"exactly like there are existiconSetoption with default value"jQueryUI". BothguiStylesandiconSetoptions defines from which part of$.jgrid.guiStylesor$.jgrid.iconsthe icons or classes of common GUI elements of the grid will be used. One can extend$.jgrid.guiStyleswith another set of elements and to use the name of the set as the value ofguiStylesparameter. One can replace the default jQuery UI classes to the classes of another CSS framework. - Internal methods
addXmlDataandaddJSONDataare full rewritten now. There are exist now only onereadInput. The part of the code is moved in$.jgrid.parseDataToHtmlwhich will be used inaddRowDatamethod too. - The performance of jqGrid is improved. The performance of reading long XML data is improved. The performance advantage take place only if no
xmlmapdefined 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
additionalPropertiesparameter allows to read more properties from input data. - Formatters supports now
getCellBuilderproperty 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 propertygetCellBuilderallows 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 nowgetCellBuilderproperty. - 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 indataparameter of jqGrid. Free jqGrid uses the newadditionalPropertiesparameter 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 optionmultiselectPositionwith default value"left"can be used with"right"value to place"cb"columns on the right size of jqGrid. One can use new methodremapColumnsByNameto place the column on another position (in the middle of the grid) and it will be still work. - TreeGrid now supports
multiselect: trueoption. - By specifying any other value of
multiselectPositionparameter 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. NewminResizingWidthparameter (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.builderSortIconsis 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.builderFmButonis 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
iColByNameandiPropByNamecan be used now to get the index of column fromcolModelor property from newadditionalPropertiesoption by name. - The new method
remapColumnsByNameare introduced. If works in the same way likeremapColumns, but it uses column names instead of column indexes. - The methods
getGridRowByIdandgetIndused to access the rows by rowid are improved. - The method
bindKeysis 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
navGridis 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: falseoption ofnavGridin such cases. - The plugin
grid.odata.js, developed by Mark Babayev (https://github.com/mirik123, [email protected]), is updated. It providesodataGenColModelandodataInitmethods allows easy usage of free jqGrid with OData services. - The new methods
createContexMenuFromNavigatorButtonsandshowHideColumnMenuare added as pluginsjquery.createcontexmenufromnavigatorbuttons.jsandjquery.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!