I am trying to create a jqGrid with MVC4 WebApi. I have looked through various example and finally using this link as reference. The issue is grid is not populating with data but it is hitting server's GET method(Kept breakpoint there to test). I have hosted my app on local IIS. Below is jqgrid page(index.htm)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My First Grid</title>
<link href="../Content/jquery.jqGrid/ui.jqgrid.css" type="text/css" rel="stylesheet" />
<style>
html, body {
font-size: 75%;
}
</style>
<script src="../Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="../Scripts/jquery-ui-1.10.4.js" type="text/javascript"></script>
<script src="../Scripts/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="../Scripts/jquery.jqGrid.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
var API_URL = "/WebApiOne/api/task/";
jQuery("#gridMain").jqGrid({
url: API_URL,
data : API_URL,
datatype: 'json',
contentType: "application/json; charset=UTF-8",
mtype: 'GET',
pager: '#pagernav',
sortable: true,
height: 200,
viewrecords: true,
colNames: ['TaskID', 'ProjectID', 'ProjectName', 'TaskName', 'TaskStatus'],
colModel: [{ name: 'TaskID', index: 'TaskID', width: 40, sorttype: "int" },
{ name: 'ProjectID', index: 'ProjectID', editable: true, edittype: 'int', width: 70 },
{ name: 'ProjectName', index: 'ProjectName', editable: true, edittype: 'text', width: 70 },
{ name: 'TaskName', index: 'TaskName', editable: true, edittype: 'text', width: 50, align: "right" },
{ name: 'TaskStatus', index: 'TaskStatus', editable: true, edittype: 'text', width: 50, align: "right"}
],
caption: "CRUD With ASP.NET Web API",
autowidth: true
});
});
</script>
</head>
<body>
<table id="gridMain">
</table>
<div id="pagernav">
</div>
</body>
</html>
Here is my Server Side Code :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace WebApiOne.Controllers
{
public class Task
{
public int TaskID { get; set; }
public int ProjectID { get; set; }
public string ProjectName { get; set; }
public string TaskName { get; set; }
public string TaskStatus { get; set; }
}
public class TaskController : ApiController
{
// GET api/task
public IEnumerable<Task> Get()
{
Task[] tasks = new Task[2];
tasks[0] = new Task()
{
TaskID = 1,
ProjectID = 1,
ProjectName = "ProjectOne",
TaskName = "FirstPage Development",
TaskStatus = "InProgress"
};
tasks[1] = new Task()
{
TaskID = 2,
ProjectID = 1,
ProjectName = "ProjectOne",
TaskName = "Second Page Development",
TaskStatus = "Yet To Start"
};
return tasks;
}
// GET api/task/5
public string Get(int id)
{
return "value";
}
// POST api/task
public void Post([FromBody]string value)
{
}
// PUT api/task/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/task/5
public void Delete(int id)
{
}
}
}
But When I browse for localhost/WebApiOne/api/task/ I get raw data in json format as :[{"TaskID":1,"ProjectID":1,"ProjectName":"ProjectOne","TaskName":"FirstPage Development","TaskStatus":"InProgress"},{"TaskID":2,"ProjectID":1,"ProjectName":"ProjectOne","TaskName":"Second Page Development","TaskStatus":"Yet To Start"}]
It proves that Server is functional and I am missing something on front end.