@using Trirand.Web.Mvc

<!DOCTYPE html>
<html lang="en-us">
<head>
    <meta charset="utf-8">
    <title>jqMultiSelect 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.jqMultiSelect.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.jqmultiselect.css" /> 
</head>
<body>

    @{ Html.BeginForm("Selection", "MultiSelect"); }

    @(Html.Trirand().JQMultiSelect(
                new JQMultiSelect
                {
                    Height = 150,
                    Width = 400,
                    Filter = Trirand.Web.Mvc.Filter.Contains,
                    Items = ViewData["items"] as List<JQListItem>
                }, "multiselect"))
            
    <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="showSelectedItemButton" 
            value="Show Selected Item" onclick="this.form.submit();" /> 
            
     @{ Html.EndForm(); }
     
    <br /><br /><br />
    <br /><br /><br />    
   
    
    <div>
          
    </div>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVCDemo.Models;
using Trirand.Web.Mvc;

namespace MVCDemo.Controllers.MultiSelect
{
    public partial class MultiSelectController : Controller    
    {
        // the parameter that holds the selected value is equal to the ID of the 
        // ComboBox control plus "_selectedValue"
        // e.g. if the ID="multiselect", then the value is passed in "multiselect_selectedValue"
        // note that the ID is case-sensitive
        public ActionResult Selection(string multiselect_selectedValue)
        {
            // load items and set selected one based on previsous selection
            // ViewData["items"] will be used in the View to populate the dropdown

            List<JQListItem> items = GetItems();

            // if multiselect_selectedValue is set, then selection is made
            if (!String.IsNullOrEmpty(multiselect_selectedValue))
            {
                // The static JQMultiSelect.GetSelectedItems method is a helper method that gets a list of 
                // JQListItem selected items from the selected value (a raw json format)
                List<JQListItem> selectedItems = JQMultiSelect.GetSelectedItems(multiselect_selectedValue);

                string message = String.Empty;
                foreach (JQListItem item in selectedItems)
                {
                    // make sure we persist the selected items after page refresh
                    items.Find(i => i.Text == item.Text).Selected = true;

                    // add the selected item Text to the message;
                    message += item.Text + ", ";
                }

                ViewData["message"] = "<b>Selected Items</b>: " + message;
            }

            ViewData["items"] = items;
            return View();
        }

        public List<JQListItem> GetItems()
        {
            var northWindModel = new NorthwindDataContext();
            List<Order> orders = northWindModel.Orders.ToList<Order>();
            List<JQListItem> items = new List<JQListItem>();

            foreach (Order order in orders)
            {
                // make sure we add only unique distrinct items that are not already added to the list
                if (items.Find(l => l.Text == order.ShipName) == null)
                {
                    var item = new JQListItem { Text = order.ShipName, Value = order.CustomerID };
                    items.Add(item);
                }
            }

            return items;
        }
            
    }
}
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" />