You can show any level of nested subgrids (master detail) inside a parent grid. Just set the $grid->setSubGridGrid("subgrid.php"); property of the parent grid to "Parent" for the parent grid and to "Child" for the child ones.

Create your subgrid in subgrid.php as normal grid and all is done. You just need to accept the parameter passed from the paraent

Complete hierarchy is achieved in this example with just 1 lines of code - and additinal 1 file for the subgrid
Below is a example of edition
<?php 
require_once '../../../../php/demo/tabs.php';
?>
<!DOCTYPE html>
<html>
  <head>
    <title>jqGrid PHP Demo</title>
    <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/jquery-ui.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/trirand/ui.jqgrid.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/ui.multiselect.css" />
    <style type="text">
        html, body {
        margin: 0;            /* Remove body margin/padding */
        padding: 0;
        overflow: hidden;    /* Remove scroll bars on browser window */
        font-size: 75%;
        }
        
    </style>
    <script src="../../../../js/jquery.min.js" type="text/javascript"></script>
    <script src="../../../../js/trirand/i18n/grid.locale-en.js" type="text/javascript"></script>
         <script src="../../../../js/trirand/jquery.jqGrid.min.js" type="text/javascript"></script> <script type="text/javascript">         
    $.jgrid.no_legacy_api = true;
    $.jgrid.useJSON = true;
    $.jgrid.defaults.width = "700";
    </script>
     
    <script src="../../../../js/jquery-ui.min.js" type="text/javascript"></script>
  </head>
  <body>
      <div>
          <?php include ("grid.php");?>
      </div>
      <br/>
      <?php tabs(array("grid.php","subgrid.php"));?>
   </body>
</html>
grid.php.
<?php
require_once '../../jq-config.php';
// include the jqGrid Class
require_once ABSPATH."php/PHPSuito/jqGrid.php";
// include the driver class
require_once ABSPATH."php/PHPSuito/DBdrivers/jqGridPdo.php";
// Connection to the server
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
// Tell the db that we use utf-8
$conn->query("SET NAMES utf8");

// Create the jqGrid instance
$grid = new jqGridRender($conn);
// Write the SQL Query
$grid->SelectCommand 'SELECT CustomerID, CompanyName, ContactName, Phone, City FROM customers';
// Set the table to where you update the data
$grid->table 'customers';
// Set output format to json
$grid->dataType 'json';
// Let the grid create the model
$grid->setColModel();
// Set the url from where we obtain the data
$grid->setUrl('grid.php');
// Set some grid options
$grid->setGridOptions(array(
    
"rowNum"=>10,
    
"height"=>250,
    
"rowList"=>array(10,20,30),
    
"sortname"=>"CustomerID"
));
$grid->setColProperty('CustomerID', array("label"=>"ID""width"=>50));
$grid->setSubGridGrid("subgrid.php");
// Enable navigator
$grid->navigator true;
// Enable only editing
$grid->setNavOptions('navigator', array("excel"=>false,"add"=>false,"edit"=>false,"del"=>false,"view"=>false));
// Enjoy
$grid->renderGrid('#grid','#pager',truenullnulltrue,true);

subgrid.php.
<?php
require_once '../../jq-config.php';
// include the jqGrid Class
require_once ABSPATH."php/PHPSuito/jqGrid.php";
// include the driver class
require_once ABSPATH."php/PHPSuito/DBdrivers/jqGridPdo.php";
// Connection to the server
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
// Tell the db that we use utf-8
$conn->query("SET NAMES utf8");
// Get the needed parameters passed from the main grid
// By default we add to postData subgrid and rowid parameters in the main grid
$oper jqGridUtils::GetParam("oper");
$subtable jqGridUtils::GetParam("subgrid");
$rowid jqGridUtils::GetParam("rowid");
//if(!$subtable && !$rowid) die("Missed parameters");
// Create the jqGrid instance
$grid = new jqGridRender($conn);
// Write the SQL Query
$grid->SelectCommand "SELECT OrderID, RequiredDate, ShipName, ShipCity, Freight, CustomerID FROM orders WHERE CustomerID = ?";
// set the ouput format to json
$grid->dataType 'json';
$grid->setPrimaryKeyId('OrderID');
// Let the grid create the model
$grid->setColModel(null,array(&$rowid));
// Set the url from where we obtain the data
$grid->setUrl('subgrid.php');
$grid->table 'orders';
$grid->setColProperty('OrderID', array(
    
"editoptions"=>array("readonly"=>true)
));
$grid->setColProperty('RequiredDate', array(
    
"editable"=>false
));
$grid->setColProperty('CustomerID', array(
    
"hidden"=>true
));
// Set some grid options
$grid->setGridOptions(array(
    
"width"=>540,
    
"rowNum"=>10,
    
"sortname"=>"OrderID",
    
"height"=>110,
    
"postData"=>array("subgrid"=>$subtable,"rowid"=>$rowid)));
// Change some property of the field(s)
$grid->setColProperty("RequiredDate", array(
    
"formatter"=>"date",
    
"formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"m/d/Y"),
    
"search"=>false
    
)
);
$grid->navigator true;
$grid->setNavOptions('navigator', array("excel"=>false,"add"=>true,"edit"=>true,"del"=>false,"view"=>false));
$grid->setNavOptions('add', array('editData'=>array("CustomerID"=>$rowid)));
// Enjoy
$subtable $subtable."_t";
$pager $subtable."_p";
$grid->renderGrid($subtable,$pagertruenull, array(&$rowid), true,true);