Hi,
I search how to show server validation error in a Grid like the client validation (see image in attach file for example).
My grid is a InCell edit mode.
This is my grid code :
@(Html.Kendo().Grid<Mentorat.Models.Intervention>() .Name("grid") .Columns(columns => { columns.Bound(c => c.Date_Intervention).Title("Date").Format("{0:yyyy/MM/dd HH:mm:ss}").Width(130).ClientGroupFooterTemplate("#= count # intervention(s)").ClientFooterTemplate("#= count # intervention(s)"); //columns.Bound(c => c.Date_Intervention).Width(130).Title("Date").ClientGroupFooterTemplate("#= count # intervention(s)").ClientFooterTemplate("#= count # intervention(s)").HtmlAttributes(new { @class = "templateCell" }).ClientTemplate(( // @Html.Kendo().DateTimePicker().Name("date_#=No_Intervention#").Format("{0:yyyy/MM/dd HH:mm}").HtmlAttributes(new { data_bind = "value:Date_Intervention" }).ToClientTemplate()).ToHtmlString() //); columns.Bound(c => c.Duree_Intervention).Title("Durée (min.)").Width(70).ClientGroupFooterTemplate("Total : #= kendo.format('{0:0.00}', sum/60)# hrs").ClientFooterTemplate("Total : #= kendo.format('{0:0.00}', sum/60)# hrs"); columns.ForeignKey(c => c.No_Mentore_Intervention, (System.Collections.IEnumerable) ViewData["ListeMentor"], "No_Mentore", "NomComplet_Mentore").Title("Mentoré").Width(160).ClientGroupHeaderTemplate("#= getHeaderMentores(value,data)#"); columns.Bound(c => c.Description_Intervention).Title("Description").Width(300); columns.Command(command => { command.Destroy(); }).Width(65); }) .ToolBar(toolbar => { toolbar.Create(); toolbar.Custom().Name("RepartirTemps").Text("Répartir").HtmlAttributes(new { id = "RepartirTemps", @class = "k-plus" }).Url("#"); toolbar.Save(); toolbar.Excel(); }) .Editable(editable => editable.Mode(GridEditMode.InCell)) .Pageable() .Filterable(ftb => ftb.Mode(GridFilterMode.Menu)) .Groupable() .Events(events => events.DataBound("onDataBound")) .Events(events => events.Edit("onEdit")) .DataSource(dataSource => dataSource .Ajax() .Events(e => e.Change("onChange")) .Events(e => e.Error("onError")) .Batch(true) .PageSize(100) .Model(model => model.Id(p => p.No_Intervention)) .Read(read => read.Action("Interventions_Read", "Interventions")) .Create(create => create.Action("Interventions_Create", "Interventions")) .Update(update => update.Action("Interventions_Update", "Interventions")) .Destroy(destroy => destroy.Action("Interventions_Destroy", "Interventions")) .ServerOperation(false) //nouveau.... .Aggregates(ag => { ag.Add(p => p.Duree_Intervention).Sum(); ag.Add(p => p.Date_Intervention).Count(); }) ))This is my controller update code :
[AcceptVerbs(HttpVerbs.Post)]public ActionResult Interventions_Update([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<Intervention> interventions){ var entities = new List<Intervention>(); if (interventions != null && ModelState.IsValid) { if (ValiderGrid(interventions)) { foreach (var intervention in interventions) { var entity = new Intervention { No_Intervention = intervention.No_Intervention, Date_Intervention = intervention.Date_Intervention, No_Mentor_Intervention = (int) Session["intNoMentor"], No_Mentore_Intervention = intervention.No_Mentore_Intervention, Duree_Intervention = intervention.Duree_Intervention, Description_Intervention = intervention.Description_Intervention }; entities.Add(entity); db.Interventions.Attach(entity); db.Entry(entity).State = EntityState.Modified; } db.SaveChanges(); } } var resultData = new[] { interventions }; return Json(resultData.AsQueryable().ToDataSourceResult(request, ModelState)); }private Boolean ValiderGrid(IEnumerable<Intervention> interventions){ foreach (var intervention in interventions) { if(intervention.Date_Intervention == null) { ModelState.AddModelError("Date_Intervention", "Vous devez inscire une date."); } } return ModelState.IsValid;}I add in attach file a capture of my action error return.
i tried lot of solution with the error events. Each solution have a loop with this property "e.errors.length" but .lenth is undefined.
it is posible to show server error in the gird like client side error? Or i can only print a error message in a popup or in a div?
Thank for your help!
