Open In App

jQWidgets jqxDataTable initRowDetails Property

Last Updated : 29 Mar, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

jQWidgets is a JavaScript framework for making web-based applications for PC and mobile devices. It is a very powerful, optimized, platform-independent, and widely supported framework. The jqxDataTable is used to read and display the HTML Table data. This is also used to display data from various data sources like  XML, JSON, Array, CSV, or TSV.

The initRowDetails property is a callback function that is helpful in initializing the details of the expanded row. It is invoked only once whenever any of the rows of the displayed jqxDataTable is expanded in the beginning. It is of Function type and its default value is null.

The list of parameters used here as follows:

  • id/key: It is stated id/key of the expanded row.
  • dataRow: It is the stated data of the expanded row in the form of Key/Value pairs.
  • element: It is the stated HTML element of the row’s details as a jQuery selector.
  • rowInfo: It is the stated object which is helpful in modifying the row details height.

Syntax:

Set the initRowDetails property.

$('Selector').jqxDataTable({ initRowDetails: null });

Return the initRowDetails property.

var initRowDetails = 
    $('Selector').jqxDataTable('initRowDetails');

Linked Files: Download jQWidgets from the given link. In the HTML file, locate the script files in the downloaded folder.

<link rel=”stylesheet” href=”jqwidgets/styles/jqx.base.css” type=”text/css” />
<script type=”text/javascript” src=”scripts/jquery.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/jqxbuttons.js”></script>
<script type=”text/javascript” src=”jqwidgets/jqxscrollbar.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>

Example 1: The below example illustrates the jqxDataTable initRowDetails property in jQWidgets.

HTML




<!DOCTYPE html>
<html lang="en">
  
<head>
    <link rel="stylesheet" href=
"jqwidgets/styles/jqx.base.css" 
          type="text/css"/>
    <script type="text/javascript" 
            src="scripts/jquery.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/jqxbuttons.js">
    </script>
    <script type="text/javascript" 
            src="jqwidgets/jqxscrollbar.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>
</head>
  
<body>
    <center>
        <h1 style="color: green">
            GeeksforGeeks
        </h1>
  
        <h3>jQWidgets jqxDataTable
            initRowDetails Property
        </h3>
  
        <div id="jqxdt"></div>
  
        <input type="button" style="margin:29px;" 
               id="jqxbtn" value="Click here" />
        <div id="log"></div>
    </center>
  
    <script type="text/javascript">
        $(document).ready(function () {
            var d = new Array();
            var subjectNames =
                ["C++", "Scala", "Java", "C", "R", "JavaScript"];
  
            var pageNumber =
                ["7", "8", "12", "11", "10", "19"];
  
            for (var j = 0; j < 6; j++) {
                var r = {};
                r["subjectnames"] =
                    subjectNames[(Math.floor(
                        Math.random() * subjectNames.length))
                    ];
  
                r["pagenumber"] =
                    pageNumber[(Math.floor(
                        Math.random() * pageNumber.length))
                    ];
                d[j] = r;
  
            }
            var src = {
                localdata: d,
                datatype: "array",
            };
            var ird = function (i, drow, e, rowinfo) {
                var td = null;
                var info = null;
                var note = null;
                rowinfo.detailsHeight = 100;
                e.append($(
"<div style='margin: 9px;'><ul style='margin-left: 29px;'>",
"<li class='title'>T</li><li>Marks</li></ul><div class='information'>",
"</div><div class='note'></div></div>"));
                td = $(e.children()[0]);
                if (td != null) {
                    info = td.find('.information');
                    note = td.find('.pagenumber');
                    var t = td.find('.title');
                    t.text(drow.subjectnames);
                    var c = $('<div style="margin: 6px;"></div>');
                    c.appendTo($(info));
                    var lc = 
                     $('<div style="float: left; width: 41%;"></div>');
                    var rc = 
                     $('<div style="float: left; width: 42%;"></div>');
                    c.append(lc);
                    c.append(rc);
                    var subjectnames = 
                        "<div style='margin: 10px;'><b>Subject:</b> "
                        + drow.subjectnames + "</div>";
                    $(lc).append(subjectnames);
                    var nc = $(
                  '<div style="white-space: normal; margin: 6px;"><span>'
                        + drow.pagenumber + '</span></div>');
                    $(note).append(nc);
  
                    $(td).jqxTabs({
                        theme: 'energyblue',
                        width: 500,
                        height: 160
                    });
                }
            }
            var data_Adapter = new $.jqx.dataAdapter(src);
            $("#jqxdt").jqxDataTable({
                source: data_Adapter,
                height: 170,
                rowDetails: true,
                initRowDetails: ird,
                sortable: true,
                columns: [
                    {
                        text: "Subject Name",
                        datafield: "subjectnames",
                        width: "120px",
                    },
                    {
                        text: "Page No.",
                        datafield: "pagenumber",
                        width: "120px",
                    },
                ],
            });
            $("#jqxbtn").jqxButton({
                width: 280
            });
            $("#jqxbtn").on("click", function () {
                $('#jqxdt').jqxDataTable('showDetails', 0);
            });
        });
    </script>
</body>
  
</html>


Output:

 

Example 2: The following is another example of the jqxDataTable initRowDetails property in jQWidgets.

HTML




<!DOCTYPE html>
<html lang="en">
  
<head>
    <link rel="stylesheet" href=
"jqwidgets/styles/jqx.base.css" 
          type="text/css"/>
    <script type="text/javascript" 
            src="scripts/jquery.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/jqxbuttons.js">
    </script>
    <script type="text/javascript" 
            src="jqwidgets/jqxscrollbar.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>
</head>
  
<body>
    <center>
        <h1 style="color: green">
            GeeksforGeeks
        </h1>
  
        <h3>jQWidgets jqxDataTable
            initRowDetails Property
        </h3>
  
        <div id="jqxdt"></div>
  
        <input type="button" style="margin:29px;" 
               id="jqxbtn" value="Click here" />
        <div id="log"></div>
    </center>
  
    <script type="text/javascript">
        $(document).ready(function () {
            var d = new Array();
            var subjectNames =
                ["C++", "Scala", "Java", "C", "R", "JavaScript"];
  
            var pageNumber =
                ["7", "8", "12", "11", "10", "19"];
  
            for (var j = 0; j < 6; j++) {
                var r = {};
                r["subjectnames"] =
                    subjectNames[(Math.floor(
                        Math.random() * subjectNames.length))
                    ];
  
                r["pagenumber"] =
                    pageNumber[(Math.floor(
                        Math.random() * pageNumber.length))
                    ];
                d[j] = r;
  
            }
            var src = {
                localdata: d,
                datatype: "array",
            };
  
            var data_Adapter = new $.jqx.dataAdapter(src);
            $("#jqxdt").jqxDataTable({
                source: data_Adapter,
                height: 170,
                initRowDetails: null,
                sortable: true,
                columns: [
                    {
                        text: "Subject Name",
                        datafield: "subjectnames",
                        width: "120px",
                    },
                    {
                        text: "Page No.",
                        datafield: "pagenumber",
                        width: "120px",
                    },
                ],
            });
            $("#jqxbtn").jqxButton({
                width: 280
            });
            $("#jqxbtn").on("click", function () {
                var ird = $('#jqxdt').jqxDataTable('initRowDetails');
                if (ird === null) {
                    $('#log').text(ird);
                }
                else {
                    $('#log').text("Not null!");
                }
            });
        });
    </script>
</body>
  
</html>


Output:

 

Reference: https://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxdatatable/jquery-datatable-api.htm



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads