I have a Project that uses Entity Framework as it data source, and I have a Kendo grid for that data set.
The Grid populates find while running from my development box but when I publish it; it just spins and nothing happens no error "nothing".
I have confirmed that the published page is talking to the Database as I can create a normal Model and for loop and return the data into a default div list. The query generated for the page does take about 3-4 seconds to process which I really can't speed up due to the size of the tables, it only returns though at most 100 records.
Below is the Index page
<style> .cont { padding-right: 10%; padding-left: 10%; margin-right: auto; margin-left: auto;}</style><div class="cont"> @(Html.Kendo().Grid<Portal.Model.DAX.PurchaseJournalTransaction>() .Name("grid") .Columns(columns => { columns.Bound(c => c.PurchId); columns.Bound(c => c.LineNum).Visible(false); columns.Bound(c => c.ItemId).Width(100); columns.Bound(c => c.ExternalItemId); columns.Bound(c => c.Name); columns.Bound(c => c.DeliveryDate).Format("{0:MM/dd/yy}"); columns.Bound(c => c.CurrencyCode).Visible(false); columns.Bound(c => c.PriceUnit).Visible(false); columns.Bound(c => c.Quantity).Format("{0:#,##0}"); columns.Bound(c => c.PurchUnit).Locked(); columns.Bound(c => c.PurchasePrice).Format("{0:$#,##0.00}"); columns.Bound(c => c.PurchaseMarkup).Visible(false); columns.Bound(c => c.DiscountPercentage).Visible(false); columns.Bound(c => c.DiscountAmount).Visible(false); columns.Bound(c => c.LineAmount).Visible(false); columns.Bound(c => c.Dimension1).Visible(false); columns.Bound(c => c.Dimension2).Visible(false); columns.Bound(c => c.Dimension3).Visible(false); columns.Bound(c => c.TaxAmount).Visible(false); columns.Bound(c => c.TaxWriteCode).Visible(false); columns.Bound(c => c.MultiLineDiscount).Visible(false); columns.Bound(c => c.MultiLinePercent).Visible(false); columns.Bound(c => c.LineDiscount).Visible(false); columns.Bound(c => c.LinePercent).Visible(false); columns.Bound(c => c.TaxGroup).Visible(false); columns.Bound(c => c.TaxItemGroup).Visible(false); columns.Bound(c => c.OriginalPurchId).Visible(false); columns.Bound(c => c.InventDimId).Visible(false); columns.Bound(c => c.InventQuantity).Visible(false); columns.Bound(c => c.LineAmountTax).Visible(false); columns.Bound(c => c.LineHeader).Visible(false); columns.Bound(c => c.RecVersion).Visible(false); columns.Bound(c => c.RecId).Visible(false); columns.Bound(c => c.Dimension4).Visible(false); columns.Bound(c => c.Source).Visible(false); columns.Bound(c => c.ApprovalUserId).Visible(false); columns.Bound(c => c.ApprovalDate).Visible(false); columns.Bound(c => c.ApprovalStatus).EditorTemplateName("ApprovalStatusEditor"); //columns.Command(command => { command.Edit(); }).Width(180); }) .ToolBar(toolbar => { toolbar.Excel(); toolbar.Save(); }) .Editable(editable => editable.Mode(GridEditMode.InCell)) .Pageable() .Navigatable() .Filterable() .Groupable() .DataSource(dataSource => dataSource .Ajax() .Model(model => { model.Id(p => p.CompanyId); model.Field(c => c.PurchId).Editable(false); model.Field(c => c.LineNum).Editable(false); model.Field(c => c.ItemId).Editable(false); model.Field(c => c.ExternalItemId).Editable(false); model.Field(c => c.Name).Editable(false); model.Field(c => c.CurrencyCode).Editable(false); model.Field(c => c.PriceUnit).Editable(false); model.Field(c => c.Quantity).Editable(false); model.Field(c => c.PurchUnit).Editable(false); model.Field(c => c.PurchasePrice).Editable(false); model.Field(c => c.DeliveryDate).Editable(false); }) .Read(read => read.Action("PurchaseJournalTransactions_Read", "Approval")) .Update(update => update.Action("PurchaseJournalTransactions_Update", "Approval")) ) ) <br /></div>
And here is the Controller:
using Microsoft.AspNet.Identity;using System;using System.Collections.Generic;using System.Data;using System.Data.Entity;using System.Linq;using System.Net;using System.Web;using System.Web.Mvc;using Kendo.Mvc.Extensions;using Kendo.Mvc.UI;using Portal.Model.DAX;namespace Portal.Views{ [Authorize(Roles="Vendor")] public class ApprovalController : Controller { private DAXContext db = new DAXContext(); public ActionResult Index() { return View(); } public ActionResult PurchaseJournalTransactions_Read([DataSourceRequest]DataSourceRequest request) { DataSourceResult result; IQueryable<PurchaseJournalTransaction> purchasejournaltransactions; string UserId = User.Identity.GetUserId(); //"ffd508d2-10e1-4b34-b1e1-f35862d90b70"; try { purchasejournaltransactions = from userVendor in db.UserVendors join vendor in db.Vendors on new { userVendor.CompanyId, userVendor.VendId } equals new { vendor.CompanyId, vendor.VendId } join journal in db.PurchaseJournals on new { p1 = (string)vendor.CompanyId, p2 = (string)vendor.VendId } equals new { p1 = (string)journal.CompanyId, p2 = (string)journal.OrderAccount } join tran in db.PurchaseJournalTransactions on new { p1 = (string)journal.CompanyId, p2 = (DateTime)journal.PurchaseOrderDate, p3 = (string)journal.PurchaseOrderId, p4 = (string)journal.PurchId } equals new { p1 = (string)tran.CompanyId, p2 = (DateTime)tran.PurchaseOrderDate, p3 = (string)tran.PurchaseOrderId, p4 = (string)tran.PurchId } where userVendor.UserId == UserId && tran.PurchaseLine.RemainPurchPhysical != 0 && tran.PurchaseLine.Purchase.PurchaseTypeId == 3 select tran; result = purchasejournaltransactions.ToDataSourceResult(request, purchaseJournalTransaction => new { CompanyId = purchaseJournalTransaction.CompanyId, PurchaseOrderDate = purchaseJournalTransaction.PurchaseOrderDate, PurchaseOrderId = purchaseJournalTransaction.PurchaseOrderId, InventTransId = purchaseJournalTransaction.InventTransId, PurchId = purchaseJournalTransaction.PurchId, LineNum = purchaseJournalTransaction.LineNum, ExternalItemId = purchaseJournalTransaction.ExternalItemId, Item = purchaseJournalTransaction.Item, ItemId = purchaseJournalTransaction.ItemId, Name = purchaseJournalTransaction.Name, CurrencyCode = purchaseJournalTransaction.CurrencyCode, Quantity = purchaseJournalTransaction.Quantity, LineAmount = purchaseJournalTransaction.LineAmount, ApprovalDate = purchaseJournalTransaction.ApprovalDate, ApprovalStatus = purchaseJournalTransaction.ApprovalStatus, PurchUnit = purchaseJournalTransaction.PurchUnit, PurchasePrice = purchaseJournalTransaction.PurchasePrice, PriceUnit = purchaseJournalTransaction.PriceUnit, PurchaseMarkup = purchaseJournalTransaction.PurchaseMarkup, DiscountPercentage = purchaseJournalTransaction.DiscountPercentage, DiscountAmount = purchaseJournalTransaction.DiscountAmount, Dimension1 = purchaseJournalTransaction.Dimension1, Dimension2 = purchaseJournalTransaction.Dimension2, Dimension3 = purchaseJournalTransaction.Dimension3, TaxAmount = purchaseJournalTransaction.TaxAmount, TaxWriteCode = purchaseJournalTransaction.TaxWriteCode, MultiLineDiscount = purchaseJournalTransaction.MultiLineDiscount, MultiLinePercent = purchaseJournalTransaction.MultiLinePercent, LineDiscount = purchaseJournalTransaction.LineDiscount, LinePercent = purchaseJournalTransaction.LinePercent, TaxGroup = purchaseJournalTransaction.TaxGroup, TaxItemGroup = purchaseJournalTransaction.TaxItemGroup, OriginalPurchId = purchaseJournalTransaction.OriginalPurchId, DeliveryDate = purchaseJournalTransaction.DeliveryDate, InventDimId = purchaseJournalTransaction.InventDimId, InventQuantity = purchaseJournalTransaction.InventQuantity, LineAmountTax = purchaseJournalTransaction.LineAmountTax, LineHeader = purchaseJournalTransaction.LineHeader, RecVersion = purchaseJournalTransaction.RecVersion, RecId = purchaseJournalTransaction.RecId, Dimension4 = purchaseJournalTransaction.Dimension4, Source = purchaseJournalTransaction.Source, ApprovalUserId = purchaseJournalTransaction.ApprovalUserId, ApprovalReasonId = purchaseJournalTransaction.ApprovalReasonId, }); return Json(result); } catch (Exception ex) { throw new HttpException(ex.InnerException.ToString()); } } [AcceptVerbs(HttpVerbs.Post)] public ActionResult PurchaseJournalTransactions_Update([DataSourceRequest]DataSourceRequest request, PurchaseJournalTransaction purchaseJournalTransaction) { if (ModelState.IsValid) { var entity = new PurchaseJournalTransaction(); entity = db.PurchaseJournalTransactions.FirstOrDefault(t => t.PurchaseOrderId == purchaseJournalTransaction.PurchaseOrderId && t.PurchaseOrderDate == purchaseJournalTransaction.PurchaseOrderDate && t.PurchId == purchaseJournalTransaction.PurchId && t.InventTransId == purchaseJournalTransaction.InventTransId && t.CompanyId == purchaseJournalTransaction.CompanyId ); //entity.CompanyId = purchaseJournalTransaction.CompanyId; //entity.PurchaseOrderId = purchaseJournalTransaction.PurchaseOrderId; //entity.PurchaseOrderDate = purchaseJournalTransaction.PurchaseOrderDate; //entity.PurchId = purchaseJournalTransaction.PurchId; //entity.InventTransId = purchaseJournalTransaction.InventTransId; //entity.LineNum = purchaseJournalTransaction.LineNum; //entity.ItemId = purchaseJournalTransaction.ItemId; //entity.ExternalItemId = purchaseJournalTransaction.ExternalItemId; //entity.Name = purchaseJournalTransaction.Name; //entity.CurrencyCode = purchaseJournalTransaction.CurrencyCode; //entity.Quantity = purchaseJournalTransaction.Quantity; //entity.PurchUnit = purchaseJournalTransaction.PurchUnit; //entity.PurchaseMarkup = purchaseJournalTransaction.PurchaseMarkup; //entity.PurchasePrice = purchaseJournalTransaction.PurchasePrice; //entity.DiscountPercentage = purchaseJournalTransaction.DiscountPercentage; //entity.DiscountAmount = purchaseJournalTransaction.DiscountAmount; //entity.LineAmount = purchaseJournalTransaction.LineAmount; //entity.Dimension1 = purchaseJournalTransaction.Dimension1; //entity.Dimension2 = purchaseJournalTransaction.Dimension2; //entity.Dimension3 = purchaseJournalTransaction.Dimension3; //entity.TaxAmount = purchaseJournalTransaction.TaxAmount; //entity.TaxWriteCode = purchaseJournalTransaction.TaxWriteCode; //entity.MultiLineDiscount = purchaseJournalTransaction.MultiLineDiscount; //entity.MultiLinePercent = purchaseJournalTransaction.MultiLinePercent; //entity.LineDiscount = purchaseJournalTransaction.LineDiscount; //entity.LinePercent = purchaseJournalTransaction.LinePercent; //entity.TaxGroup = purchaseJournalTransaction.TaxGroup; //entity.TaxItemGroup = purchaseJournalTransaction.TaxItemGroup; //entity.OriginalPurchId = purchaseJournalTransaction.OriginalPurchId; //entity.DeliveryDate = purchaseJournalTransaction.DeliveryDate; //entity.InventDimId = purchaseJournalTransaction.InventDimId; //entity.InventQuantity = purchaseJournalTransaction.InventQuantity; //entity.LineAmountTax = purchaseJournalTransaction.LineAmountTax; //entity.LineHeader = purchaseJournalTransaction.LineHeader; //entity.RecVersion = purchaseJournalTransaction.RecVersion; //entity.RecId = purchaseJournalTransaction.RecId; //entity.Dimension4 = purchaseJournalTransaction.Dimension4; if ( entity.ApprovalStatus != purchaseJournalTransaction.ApprovalStatus) { entity.ApprovalUserId = User.Identity.GetUserId(); entity.ApprovalDate = DateTime.Now; entity.ApprovalStatus = purchaseJournalTransaction.ApprovalStatus; entity.Source = ApprovalSource.Web; //entity.ApprovalReasonId = purchaseJournalTransaction.ApprovalReasonId; }; //db.PurchaseJournalTransactions.Attach(entity); db.Entry(entity).State = EntityState.Modified; db.SaveChanges(); } else { } return Json(new[] { purchaseJournalTransaction }.ToDataSourceResult(request, ModelState)); } [HttpPost] public ActionResult Excel_Export_Save(string contentType, string base64, string fileName) { var fileContents = Convert.FromBase64String(base64); return File(fileContents, contentType, fileName); } protected override void Dispose(bool disposing) { db.Dispose(); base.Dispose(disposing); } }}