C# 在可编辑剑道UI网格中使用动态类型
我目前正在做一个项目,我需要用用户选择的列创建一个网格。这些列可以来自数据库上下文中的任意表。更糟糕的是,数据库由不同的软件管理,表和表字段可能会频繁更改。这在可预见的未来不会改变 所以我不能只创建一个包含所有可能列的模型。相反,我使用C# 在可编辑剑道UI网格中使用动态类型,c#,asp.net,kendo-ui,kendo-grid,dynamictype,C#,Asp.net,Kendo Ui,Kendo Grid,Dynamictype,我目前正在做一个项目,我需要用用户选择的列创建一个网格。这些列可以来自数据库上下文中的任意表。更糟糕的是,数据库由不同的软件管理,表和表字段可能会频繁更改。这在可预见的未来不会改变 所以我不能只创建一个包含所有可能列的模型。相反,我使用dynamic类型将数据移交给视图。这对我添加到剑道网格中的每个选项都非常有效——除了使其可编辑。为了使示例更容易理解,我省略了所有不相关的内容(如.Sortable()或通过Ajax读取数据的方法) ColumnData[]是显示的所有列的数组,包含它们的类型和
dynamic
类型将数据移交给视图。这对我添加到剑道网格中的每个选项都非常有效——除了使其可编辑。为了使示例更容易理解,我省略了所有不相关的内容(如.Sortable()
或通过Ajax读取数据的方法)
ColumnData[]
是显示的所有列的数组,包含它们的类型和名称
@model ColumnData[]
@(Html.Kendo().Grid<dynamic>()
.Name("grid")
.Columns(columns =>
{
for (var i = 0; i < Model.Length; i++)
{
columns.Bound(Model[i].Type, Model[i].Name);
}
})
//.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
)
)
我的猜测是,它在某个地方使用了lamba函数,这不能用于动态对象。我不知道,我怎么才能绕过这个问题。因为在运行时使网格可编辑是不可能的(),我认为您应该在客户端初始化整个网格。
您可以找到一个很好的示例。因为在运行时使网格可编辑是不可能的()我认为您应该在客户端初始化整个网格。
你可以找到一个很好的例子。我会把这种可能性放在脑后,但出于可维护性的主要原因,我并不想转而使用js创建网格。(我们没有太多定制的js代码,希望保持这种方式)我会把这种可能性放在脑后,但我并不真的想切换到在js中创建网格,主要是出于可维护性的原因。(我们没有太多定制的js代码,希望保持这种方式)我会把这种可能性放在脑后,但我并不真的想切换到在js中创建网格,主要是出于可维护性的原因。(我们没有太多自定义js代码,希望保持这种方式)
System.InvalidOperationException: Templates can be used only with field access, property
access, single-dimension array index, or single-parameter custom indexer expressions