【发布时间】:2018-09-13 14:22:40
【问题描述】:
【问题讨论】:
标签: asp.net asp.net-mvc kendo-ui kendo-grid
【问题讨论】:
标签: asp.net asp.net-mvc kendo-ui kendo-grid
telerik 组件在后台对数据源进行操作。我发现 jquery 数据源示例对使用它们很有帮助telerik jquery datasource
当您配置网格并添加保存选项时,它将调用数据源上的同步方法。网格将跟踪您对数据源所做的更改类型,即插入、更新、删除,并将为您所做的每个更改调用适当的方法。datasource configuration and events。您只需要确保您的控制器中有一个方法可以对每种类型的更改执行您想要的操作。
如果您的网格设置如下
@(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));
}
}
我希望这会有所帮助。我知道掌握这些网格有多么困难,但是一旦您了解它们的工作原理,它们就会很棒
【讨论】: