Book Image

Instant Kendo UI Grid

By : James R. Lamar
Book Image

Instant Kendo UI Grid

By: James R. Lamar

Overview of this book

<p>Kendo grids are the perfect fit if you need a powerful set of tools to let users manipulate data, or even if you just want a great way to dress up existing tables.</p> <p>Instant Kendo UI Grid is a practical, hands-on guide that will provide dozens of working examples and also serve as a reference for customizing your grids in no time. It will teach you to create detailed and beautiful grids. This book takes you through the many options and variations of using Kendo UI grids. The readers will end up being comfortable implementing grids in any relevant situation.</p> <p>You will learn about how to develop elaborate grids to handle any CRUD (Create, Read, Update, Delete) operation in a way that is easily maintained and even easier to develop. Styling is a breeze with Kendo UI themes, which also happens to include a theme to match the ever popular Twitter Bootstrap.</p> <p>Instant Kendo UI Grid is your go-to reference for creating amazingly beautiful and highly functional grids for tabular data.</p>
Table of Contents (7 chapters)

Creating a grid within a grid (Advanced)


This recipe demonstrates how to create a Kendo Grid within a grid.

Getting ready

Open 11-gridwithingrid.html in your editor or create a new document.

How to do it...

Copy the following code into your new document:

<!DOCTYPE html>
<html>
<head>
<title>Kendo UI Grid How-to</title>
<link rel="stylesheet" type="text/css" href="kendo/styles/kendo.common.min.css">
<link rel="stylesheet" type="text/css" href="kendo/styles/kendo.default.min.css">
<script src="kendo/js/jquery.min.js"></script>
<script src="kendo/js/kendo.web.min.js"></script>
</head>
<body>
<h3 style="color:#4f90ea;">Exercise 11 - Creating a Grid Within a Grid</h3>
<p><a href="index.html">Home</a></p>
<script type="text/javascript">
$(document).ready(function() {
    var outerServiceURL = "http://gonautilus.com/kendogen/KENDO.cfc?method=getArtists";
   var innerServiceURL = "http://gonautilus.com/kendogen/KENDO.cfc?method=getArt";
   var myDataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: outerServiceURL,
                dataType: "JSONP"
            }
        }
    });
    $("#myGrid").kendoGrid({
        dataSource: myDataSource,
        sortable: true,
        detailInit: detailInit,
        columns: [{ field: "ARTISTID", title: "Artist ID"},
            { field: "FIRSTNAME", title: "First Name"},
            { field: "LASTNAME", title: "Last Name"},
            { field: "EMAIL", title: "Email"},
            { field: "PHONE", title: "Phone Number"}]

    });
    function detailInit(e) {
        $("<div/>").appendTo(e.detailCell).kendoGrid({
            dataSource: {
                transport: {
                    read: {
                        url: innerServiceURL,
                        dataType: "JSONP"                    }
                },
      filter: { field: "ARTISTID", operator: "eq", value: e.data.ARTISTID }
            },
            scrollable: false,
            sortable: false,
            columns: [
            { field: "ARTID", title: "Art ID"},
            { field: "ARTNAME", title: "Art Name"},
            { field: "DESCRIPTION", title: "Description"},
            { field: "PRICE", title: "Price", template: '#= kendo.toString(PRICE,"c") #'},
            { field: "LARGEIMAGE", title: "Large Image"},
            { field: "MEDIAID", title: "Media ID"},
            { field: "ISSOLD", title: "Sold"}]
        });
    }
});
</script>
<div id="myGrid"></div>
</body>
</html>

How it works...

In this recipe, we define the detailInit parameter and pass to it the function that is also called detailInit. The detailInit function we created defines an inner Kendo Grid that binds to the ARTISTID column of the row of the outer Kendo Grid from which the detailInit function is called. We bind the inner grid to the outer grid using the filter parameter and by specifying the name of the column and passing the value of that particular column using e.data.