Kendo DataSource如何在使用DataTable时定义Model.Id

Kel*_*ine 5 kendo-ui kendo-grid kendo-asp.net-mvc

在@(Html.Kendo().Grid(Model)中定义DataSource时,我已经成功使用了

.DataSource( dataSource => .Ajax( ).Model( model => model.Id( m => m.PROPERTY ) ) )
Run Code Online (Sandbox Code Playgroud)

其中PROPERTY是作为模型的对象的属性.如果Model是System.Data.DataTable并且DataTable中的Id列是TableId,那么定义Model.Id的正确语法是什么?

换句话说,model.Id(m => ???).

我试过了,model.Id( m => Model.PrimaryKey )这似乎满足了model.Id设置的要求,但Update Action(.Update(update => update.Action("MyUpdateMethod", "MyController"))没有命中,所以我认为仍然有问题.

Kel*_*ine 0

我有一个答案,尽管它不是很圆滑。它有几个部分。

首先,为了编辑,我必须设置一个 Model.Id,如何做这是我最初的问题。答案很简单,model.Id( "KEY_COLUMN_NAME" )在 .DataSource.Model 方法中。但是,这还不足以解决更新不发生的问题。Telerik 支持建议我需要定义一个自定义数据对象 (POCO),该对象具有与 DataTable 的列相同的所有属性。POCO 成为更新的类型

public ActionResult MyUpdate( [DataSourceRequest] DataSourceRequest _request, MyPOCO _data ){...}

然后,编辑器可以将 DataRow 列映射到 POCO 属性,然后 MyUpdate 就可以工作了。