You can se the LoadOnDemand property of each JQTreeNode to true - this will show an expand image before the node and clicking on it will issue a callback to the Controller specified by the DataUrl property in order to fetch the child nodes. This is commonly referred to as Ajax or LoadOnDemand loading of nodes and allows loading infinite amount of nodes step-by-step. When a node marked as LoadOnDemand is expanded, the Controller specified by the JQTreeView DataUrl property is called with a parameter parentNodeValue and you can use this parameter to get the Value of the expanded (parent) node. Using the Value you can then load child nodes in a List collection and then DataBind it the treeview - the nodes will be sent to the client-side via Ajax.
@using Trirand.Web.Mvc
@using MVCDemo.Models
@using System.Web.UI.WebControls

<!DOCTYPE html>
<html lang="en-us">
<head>
    <meta charset="utf-8">
    <title>jqTreeView for ASP.NET MVC - Load On Demand via Ajax</title>    
     <!-- jQuery runtime minified -->
    <script src="~/Scripts/jquery-3.2.1.min.js" type="text/javascript"></script>
    <!-- The jqTreeView client-side javascript -->
    <script src="~/Scripts/trirand/jquery.jqTreeView.min.js" type="text/javascript"></script>
    <!-- The jQuery UI theme that will be used by the grid. -->
    <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.12.1/themes/redmond/jquery-ui.css" />
    <!-- The jQuery UI theme extension jqTreeView needs -->    
    <link rel="stylesheet" type="text/css" href="~/Content/themes/ui.jqtreeview.css" />
</head>
<body>    
    
    <div>
        @(Html.Trirand().JQTreeView(
                new JQTreeView
                {
                    DataUrl = Url.Action("TreeView_LoadOnDemand_DataRequested"),
                    Height = Unit.Pixel(350),
                    Width = Unit.Pixel(300) 
                }, "treeview"))           
    </div>
       
    <br />
    <br />
    <div>
          
    </div>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Trirand.Web.Mvc;
using System.Collections;

namespace MVCDemo.Controllers.Tree
{
    public partial class TreeController : Controller
    {
        public ActionResult LoadOnDemand()
        {
            return View();
        }

        public JsonResult TreeView_LoadOnDemand_DataRequested(string parentNodeValue)
        {
            string startingPath = HttpContext.Request.MapPath("~/");
            if (parentNodeValue != null)                
                startingPath = parentNodeValue;

            var tree = new JQTreeView();
            var dirs = GetDirectories(startingPath);
            var files = GetFiles(startingPath);

            List<JQTreeNode> allNodes = new List<JQTreeNode>();
            foreach (JQTreeNode node in dirs)
                allNodes.Add(node);
            foreach (JQTreeNode node in files)
                allNodes.Add(node);
            
            return tree.DataBind(allNodes);
        }

        private List<JQTreeNode> GetDirectories(string startingPath)
        {
            System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startingPath);

            IEnumerable<System.IO.DirectoryInfo> dirList = dir.GetDirectories("*.*",
                    System.IO.SearchOption.TopDirectoryOnly);

            var dirs = from directory in dirList
                       orderby directory.Name
                       select new JQTreeNode
                       {
                           Text = directory.Name,
                           Value = directory.FullName,
                           LoadOnDemand = true,
                           ImageUrl = "/content/images/folder.png",
                           ExpandedImageUrl = "/content/images/folder-open.png"
                       };
            
            List<JQTreeNode> nodes = new List<JQTreeNode>();
            foreach (JQTreeNode node in dirs)
            {
                nodes.Add(node);
            }

            return nodes;
        }

        private List<JQTreeNode> GetFiles(string startingPath)
        {
            System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startingPath);
            
            IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", 
                    System.IO.SearchOption.TopDirectoryOnly);

            var dirs = from file in fileList
                       orderby file.Name
                       select new JQTreeNode
                       {
                           Text = file.Name,
                           Value = file.FullName,
                           ImageUrl = "/content/images/document.png",                           
                       };
            
            List<JQTreeNode> nodes = new List<JQTreeNode>();
            foreach (JQTreeNode node in dirs)
            {
                nodes.Add(node);
            }

            return nodes;
        }        
    }
}
Switch theme:


Theming is based on the very popular jQuery ThemeRoller standard. This is the same theming mechanism used by jQuery UI and is now a de-facto standard for jQuery based components. The benefits of using ThemeRoller are huge. We can offer a big set of ready to use themes created by professional designers, including Windows-like themes (Redmond), Apple-like theme (Cupertino), etc. In addition to that any jQuery UI controls on the same page will pick the same theme.

Last, but not least, you can always roll your own ThemeRoller theme, using the superb Theme Editor

To use a theme, simply reference 2 Css files in your Html <head> section - the ThemeRoller theme you wish to use, and the jqGrid own ThemeRoller Css file. For example (Redmond theme):

<link rel="stylesheet" type="text/css" media="screen" href="/themes/redmond/jquery-ui-1.8.2.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="/themes/ui.jqgrid.css" />