The Selected property of each JQTreeNode instance can be set to mark the node as selected. Upon posting back to the server, the {TreeViewID}_selectedState field holds a list of all selected nodes on the client-side in JSON format. Please, review the the code in the Controller for details on how this can be achieved.
@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 - Selection</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>
    @{ Html.BeginForm("Selection", "Tree"); }

    <div>
    @(Html.Trirand().JQTreeView(
                new JQTreeView
                {
                    DataUrl = Url.Action("TreeView_Selection_DataRequested"),
                    MultipleSelect = true,
                    Height = Unit.Pixel(300),
                    Width = Unit.Pixel(300)                    
                }, "SelectionTreeView"))       
        
     </div>    
    
     <br /><br /><br /><br />
    
     @if (ViewData["message"] != null && ViewData["message"].ToString().Length > 0) { 
        <span style="font-size:120%; font-family: Tahoma">@Html.Raw(ViewData["message"])</span>
      } 
    
   
     <br /><br />
     
    <input type="button" 
            id="showSelectedBoxesButton" 
            value="Show Selected Nodes" onclick="this.form.submit();" /> 
            
     @{ Html.EndForm(); }
            
    <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.Web.Script.Serialization;

namespace MVCDemo.Controllers.Tree
{
    public partial class TreeController : Controller
    {
        // we will store selected nodes here to save selected state between page refreshes
        List<JQTreeNode> selectedNodes = new List<JQTreeNode>();

        // the first parameter to the Controller is passed from the JQTreeViewInstance
        // the ID is equal to the ID of the TreeView (defined in the View) 
        // plus the "_selectedState" suffix.
        // In initial state the parameter is null. In post state, it contains the 
        // JSON representation of the selected nodes on the client-side.
        public ActionResult Selection(string SelectionTreeView_selectedState)
        {
            if (!String.IsNullOrEmpty(SelectionTreeView_selectedState))
            {
                selectedNodes =
                    new JavaScriptSerializer().Deserialize<List<JQTreeNode>>(SelectionTreeView_selectedState);

                // store in session in order to save check state
                // to be later used in the DataRequested controller
                Session["selectedNodes"] = selectedNodes;

                string message = "<b>Selected Nodes</b>: ";
                foreach (JQTreeNode node in selectedNodes)
                {
                    message += node.Text + ", ";
                }

                ViewData["message"] = message;

            }
            return View();
        }

        public JsonResult TreeView_Selection_DataRequested()
        {
            var tree = new JQTreeView();

            List<JQTreeNode> nodes = new List<JQTreeNode>();

            nodes.Add(new SelectionLeafNode { Text = "One" });
            nodes.Add(new SelectionFolderNode { Text = "Two", Selected = true, Expanded = true });
            nodes.Add(new SelectionLeafNode { Text = "Three" });

            var secondNode = nodes.Find(n => n.Text == "Two");

            secondNode.Nodes.Add(new SelectionLeafNode { Text = "2.1" });
            secondNode.Nodes.Add(new SelectionFolderNode { Text = "2.2", Expanded = true });
            secondNode.Nodes.Add(new SelectionLeafNode { Text = "2.3" });

            secondNode.Nodes.Find(n => n.Text == "2.2").Nodes.Add(new SelectionLeafNode { Text = "2.2.1" });
            secondNode.Nodes.Find(n => n.Text == "2.2").Nodes.Add(new SelectionLeafNode { Text = "2.2.2", Selected = true });
            secondNode.Nodes.Find(n => n.Text == "2.2").Nodes.Add(new SelectionLeafNode { Text = "2.2.4" });
            secondNode.Nodes.Find(n => n.Text == "2.2").Nodes.Add(new SelectionLeafNode { Text = "2.2.3", Selected = true });

            SetSelectedNodes(nodes);

            return tree.DataBind(nodes);
        }

        public class SelectionFolderNode : JQTreeNode
        {
            public SelectionFolderNode()
            {
                ImageUrl = "/content/images/folder.png";
                ExpandedImageUrl = "/content/images/folder-open.png";
            }
        }

        public class SelectionLeafNode : JQTreeNode
        {
            public SelectionLeafNode()
            {
                ImageUrl = "/content/images/document.png";
            }
        }

        public void SetSelectedNodes(List<JQTreeNode> allNodes)
        {
            List<JQTreeNode> selectedNodes = Session["selectedNodes"] as List<JQTreeNode>;
            if (selectedNodes != null)
            {
                var tree = new JQTreeView();
                var allNodesFlat = tree.GetAllNodesFlat(allNodes);

                foreach (JQTreeNode node in allNodesFlat)
                {
                    var matchedSelectedNode =
                        selectedNodes.Find(selectedNode => selectedNode.Text == node.Text);

                    if (matchedSelectedNode != null)
                        node.Selected = true;
                    else
                        node.Selected = false;
                }
            }
        }
    }
}
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" />