Skip to content

Latest commit

 

History

History
80 lines (65 loc) · 10.1 KB

README49.md

File metadata and controls

80 lines (65 loc) · 10.1 KB

free fork of jqGrid

======

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

The following main new features are implemented in the version 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 exist guiStyles option with default value "jQueryUI" exactly like there are exist iconSet option with default value "jQueryUI". Both guiStyles and iconSet 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 of guiStyles parameter. One can replace the default jQuery UI classes to the classes of another CSS framework.
  • Internal methods addXmlData and addJSONData are full rewritten now. There are exist now only one readInput. The part of the code is moved in $.jgrid.parseDataToHtml which will be used in addRowData 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 like xmlmap: "nodeName" or xmlmap: "[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 property getCellBuilder 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 now getCellBuilder 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 in data parameter of jqGrid. Free jqGrid uses the new additionalProperties 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 option multiselectPosition with default value "left" can be used with "right" value to place "cb" columns on the right size of jqGrid. One can use new method remapColumnsByName 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 example multiselectPosition: "none", the column with checkboxs ("cb" column) will not created at all. One can still select multiple lines. The usage of multiselectPosition: "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 guiStyleName jQueryUI. Thus the resizer uses the color of the border of the "ui-widget-header" class. New minResizingWidth 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 and iPropByName can be used now to get the index of column from colModel or property from new additionalProperties option by name.
  • The new method remapColumnsByName are introduced. If works in the same way like remapColumns, but it uses column names instead of column indexes.
  • The methods getGridRowById and getInd 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 to true. 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 use navOptions: { hideEmptyPagerParts: false } of jqGrid or set hideEmptyPagerParts: false option of navGrid in such cases.
  • The plugin grid.odata.js, developed by Mark Babayev (https://github.com/mirik123, markolog@gmail.com), is updated. It provides odataGenColModel and odataInit methods allows easy usage of free jqGrid with OData services.
  • The new methods createContexMenuFromNavigatorButtons and showHideColumnMenu are added as plugins jquery.createcontexmenufromnavigatorbuttons.js and jquery.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!