我有一个具有动态"属性的模型" (在DB级别,类似于Entity-Attribute-Value系统)。
这些属性位于Dictionary<int, string>
字段中,并希望将它们显示在列中。
该模型具有静态数组(在静态反演器中初始化)&#34;属性&#34;姓名&amp;键:
public static ModelSpecialParameter[] SpecialFields;
和一个字典(在模型创建中初始化,并添加了所有可用的键)及其值。
public Dictionary<int, string> ValuesForDynamicProps;
@(Html.Kendo().Grid(Model)
.Name("grid")
.Columns(columns =>
{
//other columns for realy propertry
//columns.Bound(e => ...
//columns.Bound(e => ...
foreach (var item in SpecialFields) // SpecialFields is a static collection. represent the name an id of the dynamic property's.
{
columns.Bound("ValuesForDynamicProps[" + item.IdProperty + "]").Width(140).Title(item.DisplayName);
}
}
我收到错误:
{&#34;绑定列需要字段或属性访问表达式。&#34;}
我也尝试了:
columns.Bound(e => e.ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);
同样的错误。
即使我想要的东西不可能,我也在寻找如何获得理想结果的想法: 添加和删除属性的灵活性。
答案 0 :(得分:1)
直接使用Fluent API并不是一种简单的方法。您需要做的是从另一个方法调用ajax,该方法将返回带有结构化数据的JSON。
或者尝试另一种方式,这与你尝试的几乎相同。也许可以帮到你: https://mycodepad.wordpress.com/2014/12/01/asp-net-mvc-5-with-razor-kendo-ui-dynamic-grid-creation-columns-ordering-grouping-and-paging/
答案 1 :(得分:0)
据我所知,你有问题:
columns.Bound(e => ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);
您传递给Bound()
方法lambda但不使用其参数(模型)。
应该有一些像:
columns.Bound(e => e.ValuesForDynamicProps[item.IdProperty]).Width(140).Title(item.DisplayName);