@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ProductViewModel>() .Name("Grid") .Columns(columns => {columns.Bound(p => p.ProductID).Groupable(false).Width(140);columns.Bound(p => p.ProductName);columns.Bound(p => p.UnitPrice).HtmlAttributes(new { style = "text-align: right" }).Width(140);columns.Bound(p => p.UnitsInStock).Width(160);}).Pageable() .Sortable() .Scrollable().Selectable(row => row.Mode(GridSelectionMode.Single).Type(GridSelectionType.Cell)) .Groupable() .DataSource(dataSource => dataSource.Ajax().Read(read => read.Action("Products_Read", "Grid"))))<button id="refreshButton" onclick="refreshGrid()">Start the Refresh</button><script> var myGrid; $(function () { myGrid = $('#Grid').data('kendoGrid'); }); function refreshGrid() { $('#refreshButton').attr("disabled", "disabled"); setInterval(DoWork, 1000); } function DoWork() { myGrid.dataSource.read(); }</script>using System.Collections.Generic;using System.Data.Linq;using System.Linq;using System.Web.Mvc;using Kendo.Mvc.Examples.Models;using Kendo.Mvc.Extensions;using Kendo.Mvc.UI;using System;namespace Kendo.Mvc.Examples.Controllers{ public partial class GridController : Controller { public ActionResult Index() { return View(GetProducts()); } public ActionResult Remote_Data() { return View("AjaxBinding"); } public ActionResult Products_Read([DataSourceRequest] DataSourceRequest request) { return Json(GetProducts().ToDataSourceResult(request), JsonRequestBehavior.AllowGet); } private static IEnumerable<OrderViewModel> GetOrders() { var northwind = new NorthwindDataContext(); var loadOptions = new DataLoadOptions(); loadOptions.LoadWith<Order>(o => o.Customer); northwind.LoadOptions = loadOptions; return northwind.Orders.Select(order => new OrderViewModel { ContactName = order.Customer.ContactName, OrderDate = order.OrderDate, OrderID = order.OrderID, ShipAddress = order.ShipAddress, ShipCountry = order.ShipCountry, ShipName = order.ShipName, EmployeeID = order.EmployeeID }); } private static IEnumerable<ProductViewModel> GetProducts() { //var northwind = new NorthwindDataContext(); var list = new List<ProductViewModel>(); var randomGen = new Random(DateTime.Now.Second); for (var i = 500; i >= 1; i--) { list.Add( new ProductViewModel { ProductID = i, ProductName = "ProductName-" + i, UnitPrice = Convert.ToDecimal(randomGen.NextDouble()), UnitsInStock = randomGen.Next(), UnitsOnOrder = (short)randomGen.Next(), Discontinued = (i % 2) == 0 , LastSupply = DateTime.Today.AddDays(i) } ); } return list.AsEnumerable(); //return northwind.Products.Select(product => new ProductViewModel //{ // ProductID = product.ProductID, // ProductName = product.ProductName, // UnitPrice = product.UnitPrice ?? 0, // UnitsInStock = product.UnitsInStock ?? 0, // UnitsOnOrder = product.UnitsOnOrder ?? 0, // Discontinued = product.Discontinued, // LastSupply = DateTime.Today //}); } private static IEnumerable<EmployeeViewModel> GetEmployees() { var northwind = new NorthwindDataContext(); return northwind.Employees.Select(employee => new EmployeeViewModel { EmployeeID = employee.EmployeeID, FirstName = employee.FirstName, LastName = employee.LastName, Country = employee.Country, City = employee.City, Notes = employee.Notes, Title = employee.Title, Address = employee.Address, HomePhone = employee.HomePhone }); } }}<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="validate" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta charset="utf-8">
</head>
<body>
<!-- Validation Tab Page -->
<div data-role="view" id="validatetab" data-title="Validate" data-layout="mobile-tabstrip">
<!-- Venue selection -->
<ul id="venue" data-role="listview" data-style="inset">
<li style="height:40px">
<a href="app/venue.html" class="button" id="venue-button" data-role="button" type="button">Select a Venue</a>
</li>
<li style="height:40px">
<input id="venuevalue" type="text" disabled="true" placeholder="Venue"></input>
</li>
</ul>
<!-- Screening selection -->
<ul id="screening" data-role="listview" data-style="inset">
<li style="height:40px">
<a href="app/screening.html" class="button" id="screeninge-button" data-role="button" type="button">Select a Screening</a>
</li>
<li style="height:40px">
<input id="screeningvalue" type="text" disabled="true" placeholder="Screening"></input>
</li>
</ul>
</div>
<!-- Screening Info Tab Page -->
<div data-role="view" id="infotab" data-title="Information" data-layout="mobile-tabstrip">
<ul id="infolist" data-role="listview" data-style="inset"></ul>
</div>
<script type="text/x-kendo-template" id="infotemplate">
<p class="listvalue">#:infoName#</p>
</script>
<!-- Tab Strip -->
<div data-role="layout" data-id="mobile-tabstrip">
<header data-role="header">
<div data-role="navbar">
<a class="nav-button" data-role="backbutton" data-align="left" href="app/logon.html">Logout</a>
<span data-role="view-title"></span>
<a data-role="button" type="button" data-align="right" data-icon="about" href="app/about.html"></a>
</div>
</header>
<p>TabStrip</p>
<div data-role="footer">
<div data-role="tabstrip" id="tabstrip">
<a href="#validatetab" data-icon="toprated">Validate</a>
<a href="#infotab" data-icon="info">Information</a>
</div>
</div>
</div>
<!-- Styles specific to page -->
<style scoped>
.listvalue
{
float: left;
font-size: medium;
line-height: .5em;
}
</style>
</body>
</html>
I have been researching the topic and had little success on solving the problem. Here is a sample of my code thus far.
View
@(Html.Telerik().Grid<ProductModel.ProductCommentsModel>() .Name("productcomments-grid") .DataKeys(keys => { keys.Add(x => x.Id); }) .DataBinding(dataBinding => { dataBinding.Ajax() .Select("ProductCommentsList", "Product", new { productId = Model.Id }) .Update("ProductCommentUpdate", "Product") .Delete("ProductCommentDelete", "Product"); }) .Columns(columns => { columns.Bound(x => x.Id) .Hidden(true); columns.Bound(x => x.ProductId) .Hidden(true); columns.Bound(x => x.CustomerId) .Hidden(true); columns.Bound(x => x.CustomerName) .Width(200) .ReadOnly(true); columns.Bound(x => x.CreatedDate) .Width(100) .ReadOnly(true); columns.Bound(x => x.LastModifiedDate) .Width(100) .ReadOnly(true); columns.Bound(x => x.Comment); columns.Command(commands => { commands.Edit().ButtonType(GridButtonType.Text); commands.Delete().ButtonType(GridButtonType.Text); }); }) .Editable(edit => edit.Mode(GridEditMode.PopUp)) .EnableCustomBinding(true))public partial class ProductCommentsModel : BaseNopEntityModel { public int ProductId { get; set; } public int CustomerId { get; set; } public string CustomerName { get; set; } [Required(AllowEmptyStrings=true)] [DisplayFormat(NullDisplayText = "", DataFormatString = "0:MM/dd/yyyy")] public DateTime? CreatedDate { get; set; } [Required(AllowEmptyStrings = true)] [DisplayFormat(NullDisplayText = "", DataFormatString = "0:MM/dd/yyyy")] public DateTime? LastModifiedDate { get; set; } public DateTime? SentForRepair { get; set; } public string Comment { get; set; } }