When inserting a new record or updating the Kendo Grid I get this error.
My Controller
My View
@model IEnumerable<KaringBasico.Models.actividades_economicas>
@{
ViewBag.Title = "Actividades Economicas";
Layout = "~/Views/Shared/_LayoutKendo.cshtml";
}
<h5><strong>@ViewBag.Title.</strong></h5>
@(Html.Kendo().Grid(Model)
.Name("gridActividadesEconomicas")
.Columns(columns =>
{
columns.Bound(p => p.actividad_economica).Width(160);
columns.Bound(p => p.descripcion).Title("Descripción");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(210);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Resizable(resize => resize.Columns(true))
.ColumnMenu()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.actividad_economica))
.Create(update => update.Action("_Create", "ActividadesEconomicas"))
.Read(read => read.Action("_Read", "ActividadesEconomicas"))
.Update(update => update.Action("_Update", "ActividadesEconomicas"))
.Destroy(update => update.Action("_Destroy", "ActividadesEconomicas"))
)
)
<script type="text/javascript">
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function () {
message += this + "\n";
});
}
});
alert(message);
}
}
</script>
My Controller
using System;
using System.Linq;
using System.Web.Mvc;
using KaringBasico.Models;
using Kendo.Mvc.UI;
using Kendo.Mvc.Extensions;
using KaringHelper;
namespace KaringBasico.Controllers
{
public class ActividadesEconomicasController : Controller
{
private readonly IUnitOfWork _uow;
private readonly IRepository<actividades_economicas> selectedRepository;
public ActividadesEconomicasController()
{
_uow = new UnitOfWork<BDKaringDataContext>();
selectedRepository = _uow.GetRepository<actividades_economicas>();
}
public ActionResult Index()
{
ViewData["titulo_pagina"] = "Actividades Economicas";
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Create([DataSourceRequest] DataSourceRequest request, actividades_economicas tabla)
{
try
{
if (TryUpdateModel(tabla))
{
selectedRepository.Add(tabla);
_uow.Save();
}
}
catch (Exception e)
{
ModelState.AddModelError(string.Empty, e.Message);
}
return Json(new[] { selectedRepository.GetAll() }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Update([DataSourceRequest] DataSourceRequest request, string actividad_economica)
{
try
{
actividades_economicas tabla = selectedRepository.SearchFor(s => s.actividad_economica == actividad_economica).SingleOrDefault();
if (tabla != null)
{
if (TryUpdateModel(tabla))
{
_uow.Save();
}
}
}
catch (Exception e)
{
ModelState.AddModelError(string.Empty, e.Message);
}
return Json(new[] { selectedRepository.GetAll() }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Destroy([DataSourceRequest] DataSourceRequest request, string actividad_economica)
{
try
{
actividades_economicas tabla = selectedRepository.SearchFor(s => s.actividad_economica == actividad_economica).SingleOrDefault();
if (tabla != null)
{
selectedRepository.Delete(tabla);
_uow.Save();
}
}
catch (Exception e)
{
ModelState.AddModelError(string.Empty, e.Message);
}
return Json(new[] { selectedRepository.GetAll() }.ToDataSourceResult(request, ModelState));
}
public ActionResult _Read([DataSourceRequest] DataSourceRequest request)
{
return Json(selectedRepository.GetAll().ToDataSourceResult(request));
}
}
}
using System.Linq;
using System.Web.Mvc;
using KaringBasico.Models;
using Kendo.Mvc.UI;
using Kendo.Mvc.Extensions;
using KaringHelper;
namespace KaringBasico.Controllers
{
public class ActividadesEconomicasController : Controller
{
private readonly IUnitOfWork _uow;
private readonly IRepository<actividades_economicas> selectedRepository;
public ActividadesEconomicasController()
{
_uow = new UnitOfWork<BDKaringDataContext>();
selectedRepository = _uow.GetRepository<actividades_economicas>();
}
public ActionResult Index()
{
ViewData["titulo_pagina"] = "Actividades Economicas";
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Create([DataSourceRequest] DataSourceRequest request, actividades_economicas tabla)
{
try
{
if (TryUpdateModel(tabla))
{
selectedRepository.Add(tabla);
_uow.Save();
}
}
catch (Exception e)
{
ModelState.AddModelError(string.Empty, e.Message);
}
return Json(new[] { selectedRepository.GetAll() }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Update([DataSourceRequest] DataSourceRequest request, string actividad_economica)
{
try
{
actividades_economicas tabla = selectedRepository.SearchFor(s => s.actividad_economica == actividad_economica).SingleOrDefault();
if (tabla != null)
{
if (TryUpdateModel(tabla))
{
_uow.Save();
}
}
}
catch (Exception e)
{
ModelState.AddModelError(string.Empty, e.Message);
}
return Json(new[] { selectedRepository.GetAll() }.ToDataSourceResult(request, ModelState));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult _Destroy([DataSourceRequest] DataSourceRequest request, string actividad_economica)
{
try
{
actividades_economicas tabla = selectedRepository.SearchFor(s => s.actividad_economica == actividad_economica).SingleOrDefault();
if (tabla != null)
{
selectedRepository.Delete(tabla);
_uow.Save();
}
}
catch (Exception e)
{
ModelState.AddModelError(string.Empty, e.Message);
}
return Json(new[] { selectedRepository.GetAll() }.ToDataSourceResult(request, ModelState));
}
public ActionResult _Read([DataSourceRequest] DataSourceRequest request)
{
return Json(selectedRepository.GetAll().ToDataSourceResult(request));
}
}
}
@model IEnumerable<KaringBasico.Models.actividades_economicas>
@{
ViewBag.Title = "Actividades Economicas";
Layout = "~/Views/Shared/_LayoutKendo.cshtml";
}
<h5><strong>@ViewBag.Title.</strong></h5>
@(Html.Kendo().Grid(Model)
.Name("gridActividadesEconomicas")
.Columns(columns =>
{
columns.Bound(p => p.actividad_economica).Width(160);
columns.Bound(p => p.descripcion).Title("Descripción");
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(210);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.Resizable(resize => resize.Columns(true))
.ColumnMenu()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.actividad_economica))
.Create(update => update.Action("_Create", "ActividadesEconomicas"))
.Read(read => read.Action("_Read", "ActividadesEconomicas"))
.Update(update => update.Action("_Update", "ActividadesEconomicas"))
.Destroy(update => update.Action("_Destroy", "ActividadesEconomicas"))
)
)
<script type="text/javascript">
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function () {
message += this + "\n";
});
}
});
alert(message);
}
}
</script>
Uncaught SyntaxError: Unexpected numberat.setter kendo.all.min.js:9lt.extend._set kendo.all.min.js:11Vt.extend.accept kendo.all.min.js:11lt.extend._accept kendo.all.min.js:11(anonymous function) kendo.all.min.js:11(anonymous function) jquery-1.10.2.js:3218fire jquery-1.10.2.js:3062self.fireWith jquery-1.10.2.js:3174deferred.(anonymous function) jquery-1.10.2.js:3263o.(anonymous function).call.X.success kendo.all.min.js:11fire jquery-1.10.2.js:3062self.fireWith jquery-1.10.2.js:3174done jquery-1.10.2.js:8249callback jquery-1.10.2.js:8792
In the provided Grid code, the ID field is as follows:
By default, Unique ID fields should not be editable. They are used in the database and in the Grid's CRUD operations as a unique value identifier to get the specific record to be modified.
However, in the captured screenshot it seems that the first column is not disabled from editing which can cause this issue. You can try to set the [ReadOnly(true)] Data Attribute to the ID field in your Model C# Class definition in order to remedy this problem:
https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.readonlyattribute?view=netframework-4.8