Here is my grid:
@(Html.Kendo().Grid<
tpnconnect.com.Models.Hub.ForkLiftTruck
>()
.Name("ForkLiftTruckGrid")
.Columns(columns =>
{
columns.Bound(f => f.ForkLiftTruckID).Title("ID").Hidden(true);
columns.Bound(f => f.Deleted).Title("Deleted");
columns.Bound(f => f.HubDepotNumber).Title("Depot Number").Locked(true);
columns.Bound(f => f.HubID).Title("Hub ID").Hidden(true);
columns.Bound(f => f.TruckNumber).Title("Truck Number");
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.ToolBar(toolbar => toolbar.Create())
.Pageable()
.Sortable()
.Filterable()
.Scrollable()
.HtmlAttributes(new { style = "height:720px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Events(events => events.Error("FLT_Grid_error_handler"))
.Model(model => model.Id(d => d.ForkLiftTruckID))
.PageSize(16)
.ServerOperation(false)
.Create(update => update.Action("AddForkLiftTruck", "Warehouse"))
.Read(read => read.Action("GetForkLiftTrucks", "Warehouse").Type(HttpVerbs.Get))
.Update(update => update.Action("EditForkLiftTruck", "Warehouse"))
)
)
Here's my ForkLiftTruck definition:
namespace tpnconnect.com.Models.Hub
{
public class ForkLiftTruck
{
public int ForkLiftTruckID { get; set; }
public int TruckNumber { get; set; }
public int HubID { get; set; }
public string HubDepotNumber { get; set; }
public bool Deleted { get; set; }
}
}
Here's my controller code:
[HttpGet]
public ActionResult GetForkLiftTrucks([DataSourceRequest]DataSourceRequest request)
{
int depotID = Utilities.GetUserDepotID();
List<
Models.Hub.ForkLiftTruck
> flts = new List<
Models.Hub.ForkLiftTruck
>();
using (WarehouseService.WarehouseServicesClient ws = new WarehouseService.WarehouseServicesClient())
{
var serviceFLTs = ws.GetForkLiftTrucks(depotID);
foreach (var serviceFLT in serviceFLTs)
{
Models.Hub.ForkLiftTruck flt = new Models.Hub.ForkLiftTruck()
{
Deleted = serviceFLT.Deleted,
ForkLiftTruckID = serviceFLT.ForkLiftTruckID,
HubDepotNumber = serviceFLT.HubDepotNumber,
HubID = serviceFLT.HubID,
TruckNumber = serviceFLT.TruckNumber
};
flts.Add(flt);
}
var data = flts.ToDataSourceResult(request);
return Json(data, JsonRequestBehavior.AllowGet);
}
}
Attached files:
1. screenshot of Chrome's network traffic inspector for the response to the grid's read request
2. screenshot of the Kendo UI listener seeing the data bind event