Компоненты telerik работают за кулисами с источником данных. Я считаю, что примеры источников данных jquery полезны для работы с ними telerik Источник данных jquery
когда вы настраиваете свою сетку и добавляете опцию сохранения, она вызывает метод синхронизации для источника данных. Сетка будет отслеживать, какие типы изменений вы внесли в источник данных, т.е. вставлять, обновлять, удалять, и будет вызывать соответствующий метод для каждого внесенного вами изменения. Конфигурация источника данных и события . вам просто нужно быть уверенным, что в вашем контроллере есть метод, позволяющий делать то, что вы хотите, с каждым типом изменений.
если ваша сетка настроена как показано ниже
@(Html.Kendo().Grid<Mymodel>()
.Name("MyGrid")
.Columns(col =>
{
col.Bound(x => x.MyId).Hidden();
col.Bound(x => x.AnotherField).Title("Product Name");
col.Bound(x => x.Athirdfield);
col.Command(cmd => { cmd.Edit(); }).Title("Actions");
})
.ToolBar(tb => { tb.Save(); })
.Editable(ed => ed.Mode(GridEditMode.InLine))
.DataSource(ds => ds
.Ajax()
.Model(md =>
{
md.Id(m => m.MyId);
})
.PageSize(10)
.Read(read => read.Action("Read", "MyGrid"))
.Create(cr => cr.Action("Create","MyGrid"))
.Update(up => up.Action("Update", "MyGrid"))
.Destroy(de => de.Action("Delete", "MyGrid")))
.Filterable()
.Pageable()
)
Теперь, когда ваша сетка видит, что вставка (или создание) необходима, она будет использовать метод и контроллер, которые вы определили в методе .Create ().
Тогда ваш контроллер должен просто обрабатывать бизнес-логику ваших операций, как показано ниже (я включил здесь только метод чтения и обновления)
public class MYGridController : Controller
{
private readonly dbContext _context;
public MyGridController(DB context)
{
_context = context;
}
public IActionResult Index()
{
return View();
}
public async Task<IActionResult> Read([DataSourceRequest]DataSourceRequest request)
{
return Json(await _context.MyModel.ToDataSourceResultAsync(request));
}
public async Task<IActionResult> Update([DataSourceRequest]DataSourceRequest request, MyModel pm)
{
try
{
_context.Update(pm);
await _context.SaveChangesAsync();
return Json(await new[] { pm }.ToDataSourceResultAsync(request, ModelState));
}
catch (DbUpdateException)
{
ModelState.AddModelError("", "Error");
}
return Json(await new[] { pm }.ToDataSourceResultAsync(request, ModelState));
}
}
Надеюсь, это поможет. Я знаю, как тяжело освоить эти сетки, но они великолепны, когда вы понимаете, как они работают