{"id":9364,"date":"2021-10-21T12:14:36","date_gmt":"2021-10-21T09:14:36","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=9364"},"modified":"2025-05-19T14:37:49","modified_gmt":"2025-05-19T11:37:49","slug":"how-to-create-grid-in-javascript","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/how-to-create-grid-in-javascript\/","title":{"rendered":"DHTMLX Grid: How to Create a Data Table in JavaScript"},"content":{"rendered":"<p>Data grid can be considered an essential component while developing web apps and interfaces. This widget allows working with massive data sets by displaying them in the form of a table.<\/p>\n<p>DHTMLX <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGrid\/\" rel=\"noopener\" target=\"_blank\">Grid widget<\/a> provides a comprehensive feature set to process large values of data and ensure user-friendly data management. It includes such convenient features, as data filtering and sorting, resizing, drag-n-drop of rows and columns, dynamic loading, and export to Excel and CSV.<\/p>\n<p>In this article, we&#8217;ll show how to build a JavaScript Grid with DHTMLX.<\/p>\n<p><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGrid\/download.shtml\" rel=\"noopener\" target=\"_blank\">Download DHTMLX Grid ><\/a><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/javascript-grid.png\" alt=\"javascript-grid\" width=\"905\" height=\"426\" class=\"aligncenter size-full wp-image-9367\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/javascript-grid.png 905w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/javascript-grid-300x141.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/javascript-grid-768x362.png 768w\" sizes=\"auto, (max-width: 905px) 100vw, 905px\" \/><\/p>\n<h5>Initialization<\/h5>\n<p>Having downloaded DHTMLX Grid (as a standalone widget or as part of <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/\" rel=\"noopener\" target=\"_blank\">Suite UI library<\/a>), you have to unpack it into a folder of your project first. Then you need to create an HTML file and add full paths to JS and CSS source files into the header:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"sy0\">&lt;!<\/span>DOCTYPE html<span class=\"sy0\">&gt;<\/span><br \/>\n<span class=\"sy0\">&lt;<\/span>html<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; <span class=\"sy0\">&lt;<\/span>head<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>title<span class=\"sy0\">&gt;<\/span>Grid demo<span class=\"sy0\">&lt;\/<\/span>title<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ include source files of the DHTMLX Suite library<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>script type<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text\/javascript&quot;<\/span> src<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;codebase\/suite.js&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>link rel<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;stylesheet&quot;<\/span> href<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;codebase\/suite.css&quot;<\/span> <span class=\"sy0\">\/&gt;<\/span><br \/>\n&nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ add dataset for the Grid<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>script type<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;text\/javascript&quot;<\/span> src<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;dataset.js&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ add CSS classes with custom settings<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>style<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; ...<br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;\/<\/span>style<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; <span class=\"sy0\">&lt;\/<\/span>head<span class=\"sy0\">&gt;<\/span><\/div><\/div>\n<p>Next, you should add a container and give it an id, for example, &#8220;grid&#8221;:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; <span class=\"sy0\">&lt;<\/span>body<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>div id<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;grid&quot;<\/span> <span class=\"kw5\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;grid-wrapper&quot;<\/span><span class=\"sy0\">&gt;&lt;\/<\/span>div<span class=\"sy0\">&gt;<\/span><\/div><\/div>\n<p>Then you have to initialize the Grid widget with the object constructor:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>script<span class=\"sy0\">&gt;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ create a data set for the first column (instead you can add your data)<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">var<\/span> users <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; name<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Gary Ortiz&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ava<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;01.png&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; name<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Albert Williamson&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ava<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;02.png&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; name<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Mildred Fuller&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ava<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;03.png&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ specify Grid configurations<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">var<\/span> config <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ configure each Grid column <\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; ...<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ initialize the Grid widget and add specified configurations<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">widget<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> dhx.<span class=\"me1\">Grid<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;grid&quot;<\/span><span class=\"sy0\">,<\/span> config<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">var<\/span> grid <span class=\"sy0\">=<\/span> <span class=\"kw1\">this<\/span>.<span class=\"me1\">widget<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span><br \/>\n&nbsp; <span class=\"sy0\">&lt;\/<\/span>body<span class=\"sy0\">&gt;<\/span><br \/>\n<span class=\"sy0\">&lt;\/<\/span>html<span class=\"sy0\">&gt;<\/span><\/div><\/div>\n<p>Read the full article about DHTMLX Grid initialization in the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/initialization\/\" rel=\"noopener\" target=\"_blank\">documentation<\/a>.<\/p>\n<h5>Styling<\/h5>\n<p>DHTMLX Grid allows you to fully customize its appearance. You can add new CSS classes with required settings in the style section of your HTML file and then specify their name in the Grid configuration.<\/p>\n<p>Thus, our Grid demo includes custom cells background, margins, and text alignment. Below are some examples of CSS classes that we created for:<\/p>\n<ul>\n<li>determining the size of your data table:<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">.<span class=\"me1\">grid<\/span><span class=\"sy0\">-<\/span>wrapper <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; width<span class=\"sy0\">:<\/span> 1100px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; height<span class=\"sy0\">:<\/span> 560px<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<ul>\n<li>applying the background color to a Grid row:<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">.<span class=\"me1\">my_custom_row<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; background<span class=\"sy0\">:<\/span> #b4dbfe<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<ul>\n<li>setting the position of a user photo:<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">.<span class=\"me1\">demo_grid<\/span><span class=\"sy0\">-<\/span>user<span class=\"sy0\">-<\/span>photo <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; border<span class=\"sy0\">-<\/span>radius<span class=\"sy0\">:<\/span> <span class=\"nu0\">50<\/span><span class=\"sy0\">%;<\/span><br \/>\n&nbsp; width<span class=\"sy0\">:<\/span> 24px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; height<span class=\"sy0\">:<\/span> 24px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; background<span class=\"sy0\">:<\/span> #61c874<span class=\"sy0\">;<\/span><br \/>\n&nbsp; text<span class=\"sy0\">-<\/span>align<span class=\"sy0\">:<\/span> center<span class=\"sy0\">;<\/span><br \/>\n&nbsp; line<span class=\"sy0\">-<\/span>height<span class=\"sy0\">:<\/span> 23px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; border<span class=\"sy0\">:<\/span> solid 1px #fff<span class=\"sy0\">;<\/span><br \/>\n&nbsp; color<span class=\"sy0\">:<\/span> white<span class=\"sy0\">;<\/span><br \/>\n&nbsp; font<span class=\"sy0\">-<\/span>weight<span class=\"sy0\">:<\/span> <span class=\"nu0\">500<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; margin<span class=\"sy0\">-<\/span>right<span class=\"sy0\">:<\/span> <span class=\"sy0\">-<\/span>3px<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<ul>\n<li>specifying the appearance of cells with tasks depending on their status:<\/li>\n<\/ul>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">.<span class=\"me1\">demo_grid<\/span><span class=\"sy0\">-<\/span>task <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; height<span class=\"sy0\">:<\/span> 24px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; max<span class=\"sy0\">-<\/span>width<span class=\"sy0\">:<\/span> 92px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; line<span class=\"sy0\">-<\/span>height<span class=\"sy0\">:<\/span> 25px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; margin<span class=\"sy0\">:<\/span> 8px auto <span class=\"nu0\">0<\/span> auto<span class=\"sy0\">;<\/span><br \/>\n&nbsp; border<span class=\"sy0\">-<\/span>radius<span class=\"sy0\">:<\/span> 100px<span class=\"sy0\">;<\/span><br \/>\n&nbsp; text<span class=\"sy0\">-<\/span>align<span class=\"sy0\">:<\/span> center<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp;<br \/>\n.<span class=\"me1\">demo_grid<\/span><span class=\"sy0\">-<\/span>task__done <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; background<span class=\"sy0\">:<\/span> linear<span class=\"sy0\">-<\/span>gradient<span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; 0deg<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">177<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">105<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">177<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">105<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; #ffffff<span class=\"sy0\">;<\/span><br \/>\n&nbsp; color<span class=\"sy0\">:<\/span> #0ab169<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp;<br \/>\n.<span class=\"me1\">demo_grid<\/span><span class=\"sy0\">-<\/span>task__progress <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; background<span class=\"sy0\">:<\/span> linear<span class=\"sy0\">-<\/span>gradient<span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; 0deg<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">136<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">209<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">136<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">209<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; #ffffff<span class=\"sy0\">;<\/span><br \/>\n&nbsp; color<span class=\"sy0\">:<\/span> #0288d1<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp;<br \/>\n.<span class=\"me1\">demo_grid<\/span><span class=\"sy0\">-<\/span>task__not<span class=\"sy0\">-<\/span>started <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; background<span class=\"sy0\">:<\/span> linear<span class=\"sy0\">-<\/span>gradient<span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; 0deg<span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">122<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">134<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">140<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">122<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">134<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">140<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; #ffffff<span class=\"sy0\">;<\/span><br \/>\n&nbsp; color<span class=\"sy0\">:<\/span> rgba<span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0.7<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<h6>Configuration<\/h6>\n<p>The Grid widget allows adjusting the configuration of its columns via the corresponding option. You can resize the header and footer, set the desired type of column editor, add content filtering functionality, etc. Check the <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/api\/api_overview\/\" rel=\"noopener\" target=\"_blank\">full list of Grid API commands<\/a>.<\/p>\n<p>Let&#8217;s configure the first column:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">columns<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ assign column width<\/span><br \/>\n&nbsp; &nbsp; width<span class=\"sy0\">:<\/span> <span class=\"nu0\">150<\/span><span class=\"sy0\">,<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ set the id of a column<\/span><br \/>\n&nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;access&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ define the type of the editor and the content alignment <\/span><br \/>\n&nbsp; &nbsp; type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;string&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ configure the header and footer<\/span><br \/>\n&nbsp; &nbsp; header<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Access&quot;<\/span><span class=\"sy0\">,<\/span> rowspan<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; footer<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Total&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ define the ability to edit data <\/span><br \/>\n&nbsp; &nbsp; editable<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span><span class=\"sy0\">,<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ set a template with content for a cell<\/span><br \/>\n&nbsp; &nbsp; template<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>value<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"sy0\">!<\/span>value<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">var<\/span> photos <span class=\"sy0\">=<\/span> value.<span class=\"me1\">reduce<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>total<span class=\"sy0\">,<\/span> user<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; total <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#40;<\/span>user.<span class=\"me1\">ava<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">?<\/span> <span class=\"st0\">'&lt;img src=&quot;.\/images\/'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user.<span class=\"me1\">ava<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'&quot; class=&quot;demo_grid-user-photo&quot;\/&gt;'<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">:<\/span> <span class=\"st0\">'&lt;div class=&quot;demo_grid-user-photo&quot; style=&quot;background:'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user.<span class=\"me1\">color<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">';&quot;&gt;'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user.<span class=\"me1\">name<\/span>.<span class=\"me1\">slice<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;&lt;\/div&gt;&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"st0\">'&lt;div class=&quot;demo_grid-user&quot;&gt;'<\/span> <span class=\"sy0\">+<\/span> photos <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;&lt;\/div&gt;&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><\/div><\/div>\n<h6>Data editing<\/h6>\n<p>DHTMLX Grid includes <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/#setting-type-of-column-editor\" rel=\"noopener\" target=\"_blank\">7 types of editors<\/a> that are applied depending on the cell content. You can choose a proper option and specify the way of editing Grid columns via the <strong>editorType<\/strong> property. The example below demonstrates how to add a select control with three available options:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"br0\">&#123;<\/span> <br \/>\n&nbsp; editorType<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;select&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; options<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;Done&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;In Progress&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;Not Started&quot;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>Besides, you can apply created CSS classes that will modify a Grid cell depending on the option selected:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">template<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>value<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>value <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;Done&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">'&lt;div class=&quot;demo_grid-task demo_grid-task__done&quot;&gt;'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; value <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;&lt;\/div&gt;&quot;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>value <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;In Progress&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">'&lt;div class=&quot;demo_grid-task demo_grid-task__progress&quot;&gt;'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; value <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;&lt;\/div&gt;&quot;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>value <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;Not Started&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">'&lt;div class=&quot;demo_grid-task demo_grid-task__not-started&quot;&gt;'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; value <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;&lt;\/div&gt;&quot;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>value <span class=\"sy0\">===<\/span> <span class=\"st0\">&quot;Active&quot;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">'&lt;div class=&quot;demo_grid-task demo_grid-task__active&quot;&gt;'<\/span> <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; value <span class=\"sy0\">+<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"st0\">&quot;&lt;\/div&gt;&quot;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/grid-select-editor.gif\" alt=\"grid-select-editor\" width=\"456\" height=\"407\" class=\"aligncenter size-full wp-image-9372\" \/><\/p>\n<h6>Filtering<\/h6>\n<p>It&#8217;s possible to <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/configuration\/#headerfooter-content\" rel=\"noopener\" target=\"_blank\">set content filtering<\/a> by specifying a filter type in the column header. Thus, for example, you can specify the <strong>selectFilter<\/strong> property to allow users to filter column data by choosing an option from a dropdown list:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;project&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nheader<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Project&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span> content<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;selectFilter&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/grid-selectFilter.gif\" alt=\"grid-selectfilter\" width=\"411\" height=\"437\" class=\"aligncenter size-full wp-image-9371\" \/><\/p>\n<p>The comboFilter property provides a way to filter column data by entering text into the edit control and choosing an option from a dropdown list:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;owner&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nheader<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Owner&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span> content<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;comboFilter&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/grid-combofilter.gif\" alt=\"grid-combo-filter\" width=\"408\" height=\"401\" class=\"aligncenter size-full wp-image-9373\" \/><\/p>\n<p>Having specified the inputFilter property, you allow your users to filter data by using a text field:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;hours&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nheader<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Number of hours&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span> content<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;inputFilter&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/grid-inputfilter.gif\" alt=\"grid-input-filter\" width=\"755\" height=\"489\" class=\"aligncenter size-full wp-image-9375\" \/><\/p>\n<h6>Footer with math functions<\/h6>\n<p>You can configure DHTMLX Grid to work with math functions and show the results in the footer. It&#8217;s possible to <a href=\"https:\/\/snippet.dhtmlx.com\/9jl55ep7\" rel=\"noopener\" target=\"_blank\">use default functions<\/a> or create custom ones. Thus, for example, you can configure a grid column to display the total value of a column and specify its format:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\"><span class=\"kw1\">this<\/span>.<span class=\"me1\">widget<\/span>.<span class=\"me1\">content<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">&quot;moneySum&quot;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; calculate<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>data<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> data.<span class=\"me1\">reduce<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>sum<span class=\"sy0\">,<\/span> c<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> sum <span class=\"sy0\">+<\/span> parseFloat<span class=\"br0\">&#40;<\/span>c<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">||<\/span> sum <span class=\"sy0\">+<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; toHtml<span class=\"sy0\">:<\/span> <span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>column<span class=\"sy0\">,<\/span> config<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>grid.<span class=\"me1\">data<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">var<\/span> data <span class=\"sy0\">=<\/span> grid.<span class=\"me1\">data<\/span>.<span class=\"me1\">map<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>item<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> item<span class=\"br0\">&#91;<\/span>column.<span class=\"me1\">id<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"kw1\">this<\/span>.<span class=\"me1\">calculate<\/span><span class=\"br0\">&#40;<\/span>data<span class=\"br0\">&#41;<\/span>.<span class=\"me1\">toLocaleString<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;en&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; style<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;currency&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; currency<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;USD&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/footer-math-formulas.png\" alt=\"footer with math formulas\" width=\"458\" height=\"550\" class=\"aligncenter size-full wp-image-9376\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/footer-math-formulas.png 458w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2021\/10\/footer-math-formulas-250x300.png 250w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><\/p>\n<p>Moreover, you have to mention this formula in the column configuration:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">id<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;cost&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\nfooter<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#123;<\/span> content<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;moneySum&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><\/div><\/div>\n<h5>Conclusion<\/h5>\n<p>Being a part of the <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxSuite\/\" rel=\"noopener\" target=\"_blank\">Suite UI library<\/a>, DHTMLX Grid is a feature-rich widget to build data-intensive and user-friendly tables. You can estimate our Grid component by downloading a <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGrid\/download.shtml\" rel=\"noopener\" target=\"_blank\">free 30-day trial<\/a>. <\/p>\n<p>Access our <a href=\"https:\/\/docs.dhtmlx.com\/suite\/grid\/\" rel=\"noopener\" target=\"_blank\">documentation<\/a> to get more information about DHTMLX Grid.<\/p>\n<p>If you still have questions, do not hesitate to <a href=\"https:\/\/dhtmlx.com\/docs\/contact.shtml\" rel=\"noopener\" target=\"_blank\">contact us<\/a>. You can also <a href=\"https:\/\/dhtmlx.com\/docs\/submit-showcases.shtml\" rel=\"noopener\" target=\"_blank\">share your experience<\/a> of working with DHTMLX Grid or any other DHTMLX library by interviewing with our team.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Data grid can be considered an essential component while developing web apps and interfaces. This widget allows working with massive data sets by displaying them in the form of &#8230;<\/p>\n","protected":false},"author":101013,"featured_media":9365,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[33,6,10],"class_list":["post-9364","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-all-posts","tag-dhtmlxgrid","tag-dhtmlxsuite"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/9364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101013"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=9364"}],"version-history":[{"count":10,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/9364\/revisions"}],"predecessor-version":[{"id":13909,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/9364\/revisions\/13909"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/9365"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=9364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=9364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=9364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}