Click on a row to see all orders for this customer


Orders for this customer:


You can use row selection in many scenarios. In this sample we are hooking the RowSelecting server-side event of the grid. In this mode, the grid will automatically postback to the server when end-users select a row and will fire the RowSelecting event handler. The selected row can be obtained using eventArgs.RowKey in the RowSelecting event handler.

You can use the event handler to write custom code and databind a second grid with details. Here, clicking on a Customer will show a details grid with all Orders for that customer (data from Northwind database).

Please, take a look at the code. Note that we are using Session to store currently selected customers. The reason we are doing this - jqGrid uses lightweight GET ajax calls to the server and they are not synced with postback mode.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="JQSuiteASPNETExample.examples.selection.masterdetail._default" %>
<%@ Register Assembly="Trirand.Web" TagPrefix="trirand" Namespace="Trirand.Web.UI.WebControls" %>

<!DOCTYPE html>
<html lang="en-us">
<head id="Head1" runat="server">
    <meta charset="utf-8">
    <title>jqGrid for ASP.NET WebForms - selection - master / detail grid</title>
    <!-- The jQuery UI theme that will be used by the grid -->
    <link rel="stylesheet" type="text/css" media="screen" href="http://code.jquery.com/ui/1.12.1/themes/redmond/jquery-ui.css" />
    <!-- The jQuery UI theme extension jqGrid needs -->
    <link rel="stylesheet" type="text/css" media="screen" href="/themes/ui.jqgrid.css" />
    <!-- jQuery runtime minified -->
    <script src="/js/jquery-3.2.1.min.js" type="text/javascript"></script>
    <!-- The localization file we need, English in this case -->
    <script src="/js/trirand/i18n/grid.locale-en.js" type="text/javascript"></script>
    <!-- The jqGrid client-side javascript -->
    <script src="/js/trirand/jquery.jqGrid.min.js" type="text/javascript"></script>    

    <style type="text/css">
        body, html { font-size: 80%; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="ScriptManager1"></asp:ScriptManager>
    <asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:SQL2008_661086_trirandEntities %>"
        SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [Phone], [City] FROM [Customers]">
    </asp:SqlDataSource>
    <asp:SqlDataSource runat="server" ID="SqlDataSource2" ConnectionString="<%$ ConnectionStrings:SQL2008_661086_trirandEntities %>"
        SelectCommand="SELECT [OrderID], [CustomerID], [RequiredDate], [ShipName], [ShipCity], [Freight] FROM [Orders] WHERE ([CustomerID] = @CustomerID)">
        <SelectParameters>
            <asp:Parameter DefaultValue="" Name="CustomerID" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>
    <asp:UpdatePanel runat="server" ID="UpdatePanel1">
        <ContentTemplate>
            <span style="font-size: 135%; font-family: Verdana; font-weight: bold">Click on a row
                to see all orders for this customer</span>
            <trirand:JQGrid runat="server" ID="JQGrid1" DataSourceID="SqlDataSource1" Width="600px"
                 OnRowSelecting="JQGrid1_RowSelecting">
                <Columns>
                    <trirand:JQGridColumn DataField="CustomerID" HeaderText="ID" PrimaryKey="True" Width="50" />
                    <trirand:JQGridColumn DataField="CompanyName" />
                    <trirand:JQGridColumn DataField="ContactName" />
                    <trirand:JQGridColumn DataField="Phone" />
                    <trirand:JQGridColumn DataField="City" />
                </Columns>
            </trirand:JQGrid>
            <br />
            <br />
            <span style="font-size: 135%; font-family: Verdana; font-weight: bold">Orders for this
                customer:</span>
            <trirand:JQGrid runat="server" ID="JQGrid2" DataSourceID="SqlDataSource2" Width="600px">
                <Columns>
                    <trirand:JQGridColumn DataField="OrderID" HeaderText="Order ID" PrimaryKey="True" Width="50" />
                    <trirand:JQGridColumn DataField="RequiredDate" DataFormatString="{0:d}" />
                    <trirand:JQGridColumn DataField="ShipName" Width="200" />
                    <trirand:JQGridColumn DataField="ShipCity" />
                    <trirand:JQGridColumn DataField="Freight" />
                </Columns>
                <ToolBarSettings ShowRefreshButton="true" ShowSearchButton="true" />
            </trirand:JQGrid>
        </ContentTemplate>
    </asp:UpdatePanel>
    <br />
    <br />
    <trirand:codetabs runat="server" ID="tabs"></trirand:codetabs>
    </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace JQSuiteASPNETExample.examples.selection.masterdetail
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            JQGrid2.Visible = false;
            if (Session["CustomerID"] != null)
            {
                JQGrid2.Visible = true;
                SqlDataSource2.SelectParameters["CustomerID"].DefaultValue = Session["CustomerID"] as string;                
            }           
        }

        protected void JQGrid1_RowSelecting(object sender, Trirand.Web.UI.WebControls.JQGridRowSelectEventArgs e)
        {
            Session["CustomerID"] = JQGrid1.SelectedRow;

            JQGrid2.Visible = true;
            SqlDataSource2.SelectParameters["CustomerID"].DefaultValue = Session["CustomerID"] as string;
        }
    }
}
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" />