Introduction
This article describes how to bind Google Chart in a WebGrid. Here we add a WebGrid that shows a chart of the state population.
Procedure for creating the application.
Step 1
First we create a Web API application as in the following:
- Start Visual Studio 2013.
- From the Start Window select "New Project".
- From the new project window select "Installed" -> "Visual C#" -> "Web" -> "Visual Studio 2012".
- Select "ASP.NET MVC4 Web Application" and click the "OK" button.
- From the "MVC4 project" window select "Web API".
- Click on the "OK" button.
Step 2
Add a Model folder as in the following:
- In the "Solution Explorer".
- Right -click on the "Model folder".
- Select "Add" -> "class".
- From the add item window select "Installed" -> "Visual C#".
- Select "Class" and click on the "Add" button.
Add the following code:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- namespace WebGridChartAPI.Models
- {
- public class StateModel
- {
- public List<State> StateValueModel { get; set; }
- }
- public class State
- {
- public int ID { get; set; }
- public string StateName { get; set; }
- public int Population { get; set; }
- }
- }
Step 3
Now in the "Controller" we add the code that uses all the variables of the Model class. This file exists:
-
In the "Solution Explorer".
-
Expand the "Controller" folder.
-
Select the "HomeController".
Add the following code:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using WebGridChartAPI.Models;
- namespace WebGridChartAPI.Controllers
- {
- public class HomeController : Controller
- {
- public ActionResult Index()
- {
- ViewBag.Message = "Bind Google chart";
- StateModel obj = new StateModel();
- List<State> obj1 = new List<State>();
- obj1 = GetStateList();
- obj.StateValueModel = obj1;
- return View(obj);
- }
- public List<State> GetStateList()
- {
- List<State> objstate = new List<State>();
- objstate.Add(new State { ID = 1, StateName = "UtterPradesh", Population = 70 });
- objstate.Add(new State { ID = 2, StateName = "Delhi", Population = 50 });
- objstate.Add(new State { ID = 3, StateName = "Madhya Pradesh", Population = 60 });
- objstate.Add(new State { ID = 4, StateName = "Rajasthan", Population = 100 });
- return objstate;
- }
- }
- }
Step 4
In the View write some code as in the following:
-
In the "Solution Explorer".
-
Expand the "Views Folder"
-
Select "Home" -> "Index.cshtml".
Add the following code:
- @model WebGridChartAPI.Models.StateModel
- @{
- ViewBag.Title = "Bind grid";
- } <h2>@ViewBag.Message</h2>
- @{
- var grid = new WebGrid(source: Model.StateValueModel, rowsPerPage: 10);
- }
- <style type="text/css">
- table.gridtable {
- font-family: verdana,arial,sans-serif;
- font-size:large;
- color:#333333;
- border-width: 1px;
- border-color: #4800ff;
- border-collapse: collapse;
- }
- table.gridtable th {
- border-width: 1px;
- padding: 8px;
- border-style: solid;
- border-color: #4800ff;
- background-color: #d18e8e;
- }
- table.gridtable td {
- border-width: 1px;
- padding: 8px;
- border-style: solid;
- border-color: #4800ff;
- background-color: #c6cff1;
- }
- </style>
- @grid.GetHtml(alternatingRowStyle: "even",
- tableStyle: "gridtable",
- columns: grid.Columns(
- grid.Column("ID", "SERIAL_NO"),
- grid.Column("StateName", header: "STATE_NAME"),
- grid.Column("Population", header: "CHART", format:
- @<text><img src="https://chart.googleapis.com/chart?cht=bhs&chd=t:@item.Population&chs=60x30" alt="@item.Population" /></text>)
- ))
Step 5
Execute the application. The output will be as: