Custom Elements Documentation
Getting Started
jqxTreeGrid is a HTML Element which represents data in a tree-like structure. the treegrid(also known as treelist) widget supports multi column display of hierarchical data, data paging, sorting and filtering, data editing, columns resizing, fixed columns, conditional formatting, aggregates and rows selection. it can read and display the data from your data sources like xml, json, array, csv or tsv. jqxtreegrid has intuitive and easy to use apis and works across devices and browsers.Every UI element from jQWidgets toolkit needs its JavaScript files to be included in order to work properly.
The first step is to create html page and add links to the javascript files and
css dependencies to your project.
The jqxTreeGrid element requires the following
files:
The next step is to add the html element within the body of the html page.<script type="text/javascript" src="../scripts/webcomponents-lite.min.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxcore.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxcore.elements.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxdata.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxdata.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxdata.export.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxbuttons.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxscrollbar.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxmenu.js"></script>
<script type="text/javascript" src="../jqwidgets/jqxradiobutton.js"></script><script type="text/javascript" src="../jqwidgets/jqxcheckbox.js"></script><script type="text/javascript" src="../jqwidgets/jqxlistbox.js"></script><script type="text/javascript" src="../jqwidgets/jqxdropdownlist.js"></script><script type="text/javascript" src="../jqwidgets/jqxdatatable.js"></script><script type="text/javascript" src="../jqwidgets/jqxtreegrid.js"></script>
The last step is to initialize the element settings:<jqx-tree-grid settings="elementSettings"></jqx-tree-grid>
To call a function(method), you need to pass the method name and parameters(if any) in the jqxTreeGrid's instance.<script type="text/javascript">
JQXElements.settings["elementSettings"] =
{
sortable:true,filterable:true, columns:columns, columnGroups:columnGroups, source:source,altRows:true, theme:"light"
}
</script>
To get the result of a function after calling it, you can use the following syntax:<script>
window.onload = function () {
var element = document.querySelector("jqx-tree-grid");
element.addRow(10,{},'first');
}
</script>
To set a property(option), you need to use the property name and value(s) along with the jqxTreeGrid's instance.<script>
window.onload = function () {
var element = document.querySelector("jqx-tree-grid");
var result = element.exportData();
}
</script>
You can also set properties of HTML Elements by using Attributes. Traditionally, attributes are used to set the initial state of an element. Properties with camelCase naming have dash-based attributes. For example: A property "dataSource" will have an attribute called "data-source".window.onload = function() {
document.querySelector("jqx-tree-grid").altRows = false;
}
To get a property(option), you need to use the property name along with the jqxTreeGrid's instance.
window.onload = function() {
var propertyValue = document.querySelector("jqx-tree-grid").altRows;
}
Event binding can be defined in the HTML as an attribute. The syntax is: 'on-' and the event's name. Event Names with camelCase naming have dash-based attributes. The attribute's value is the event handler's name. The addEventListener
function can also be used for event binding.
<script>
window.onload = function () {
var element = document.querySelector("jqx-tree-grid");
element.addEventListener("bindingComplete", function(event){
// Your code here
});
}
</script>
Example
<!DOCTYPE html>
<html lang="en">
<head>
<title id='Description'>TreeGrid Custom Element Filtering and Sorting</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1 maximum-scale=1 minimum-scale=1" />
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" />
<link rel="stylesheet" href="../../jqwidgets/styles/jqx.light.css" type="text/css" />
<link rel="stylesheet" href="../../styles/demos.css" type="text/css" />
<script type="text/javascript" src="../../scripts/webcomponents-lite.min.js"></script><script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script><script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script><script type="text/javascript" src="../../jqwidgets/jqxcore.elements.js"></script><script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script><script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script><script type="text/javascript" src="../../jqwidgets/jqxdatatable.js"></script><script type="text/javascript" src="../../jqwidgets/jqxtreegrid.js"></script><script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script><script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script><script type="text/javascript">var source = new jqx.dataAdapter({dataType: "json",dataFields: [{ name: 'EmployeeID', type: 'number' },{ name: 'ReportsTo', type: 'number' },{ name: 'FirstName', type: 'string' },{ name: 'LastName', type: 'string' },{ name: 'Country', type: 'string' },{ name: 'City', type: 'string' },{ name: 'Address', type: 'string' },{ name: 'Title', type: 'string' },{ name: 'HireDate', type: 'date' },{ name: 'BirthDate', type: 'date' }],hierarchy:{keyDataField: { name: 'EmployeeID' },parentDataField: { name: 'ReportsTo' }},id: 'EmployeeID',localData: [{ "EmployeeID": 1, "FirstName": "Nancy", "LastName": "Davolio", "ReportsTo": 2, "Country": "USA", "Title": "Sales Representative", "HireDate": "1992-05-01 00:00:00", "BirthDate": "1948-12-08 00:00:00", "City": "Seattle", "Address": "507 - 20th Ave. E.Apt. 2A" },{ "EmployeeID": 2, "FirstName": "Andrew", "LastName": "Fuller", "ReportsTo": null, "Country": "USA", "Title": "Vice President, Sales", "HireDate": "1992-08-14 00:00:00", "BirthDate": "1952-02-19 00:00:00", "City": "Tacoma", "Address": "908 W. Capital Way" },{ "EmployeeID": 3, "FirstName": "Janet", "LastName": "Leverling", "ReportsTo": 2, "Country": "USA", "Title": "Sales Representative", "HireDate": "1992-04-01 00:00:00", "BirthDate": "1963-08-30 00:00:00", "City": "Kirkland", "Address": "722 Moss Bay Blvd." },{ "EmployeeID": 4, "FirstName": "Margaret", "LastName": "Peacock", "ReportsTo": 2, "Country": "USA", "Title": "Sales Representative", "HireDate": "1993-05-03 00:00:00", "BirthDate": "1937-09-19 00:00:00", "City": "Redmond", "Address": "4110 Old Redmond Rd." },{ "EmployeeID": 5, "FirstName": "Steven", "LastName": "Buchanan", "ReportsTo": 2, "Country": "UK", "Title": "Sales Manager", "HireDate": "1993-10-17 00:00:00", "BirthDate": "1955-03-04 00:00:00", "City": "London", "Address": "14 Garrett Hill" },{ "EmployeeID": 6, "FirstName": "Michael", "LastName": "Suyama", "ReportsTo": 5, "Country": "UK", "Title": "Sales Representative", "HireDate": "1993-10-17 00:00:00", "BirthDate": "1963-07-02 00:00:00", "City": "London", "Address": "Coventry House Miner Rd." },{ "EmployeeID": 7, "FirstName": "Robert", "LastName": "King", "ReportsTo": 5, "Country": "UK", "Title": "Sales Representative", "HireDate": "1994-01-02 00:00:00", "BirthDate": "1960-05-29 00:00:00", "City": "London", "Address": "Edgeham Hollow Winchester Way" },{ "EmployeeID": 8, "FirstName": "Laura", "LastName": "Callahan", "ReportsTo": 2, "Country": "USA", "Title": "Inside Sales Coordinator", "HireDate": "1994-03-05 00:00:00", "BirthDate": "1958-01-09 00:00:00", "City": "Seattle", "Address": "4726 - 11th Ave. N.E." },{ "EmployeeID": 9, "FirstName": "Anne", "LastName": "Dodsworth", "ReportsTo": 5, "Country": "UK", "Title": "Sales Representative", "HireDate": "1994-11-15 00:00:00", "BirthDate": "1966-01-27 00:00:00", "City": "London", "Address": "7 Houndstooth Rd." }]});var columns = [{ text: 'FirstName', columnGroup: 'Name', dataField: 'FirstName', width: 200 },{ text: 'LastName', columnGroup: 'Name', dataField: 'LastName', width: 200 },{ text: 'Title', dataField: 'Title', width: 160 },{ text: 'Birth Date', dataField: 'BirthDate', cellsFormat: 'd', width: 120 },{ text: 'Hire Date', dataField: 'HireDate', cellsFormat: 'd', width: 120 },{ text: 'Address', dataField: 'Address', width: 250 },{ text: 'City', dataField: 'City', width: 120 },{ text: 'Country', dataField: 'Country' }];var columnGroups = [{ text: 'Name', name: 'Name' }];JQXElements.settings["treeGridSettings"] ={sortable:true,filterable:true, columns:columns, columnGroups:columnGroups, source:source,altRows:true, theme:"light"}</script></head><body><jqx-tree-grid settings="treeGridSettings"></jqx-tree-grid></body></html>