我有一个模型,其中包含另一个模型的数据类型列表的属性,如下所示。
public class Eatables
{
int id {get;set;}
string name{get;set;}
List<Ingredient> ingredientList{get;set;}
}
public class Ingredient
{
int id {get;set;}
quantity {get;set;}
calories {get;set;}
}
如果我想根据剑道标题下方显示所需食材的食物清单。
SL.No | Eatable | Sugar(KG) | Salt(gram) | Oil(L)
如果糖成分id为2且盐成分id为4,我将食堂列表传递给显示kendo列表的视图,我在下面的列绑定LINQ查询下获取成分的数量,如下所示。 / p>
columns.Bound(x => x.ingredientList.Find(x=>x.id=="2").quantity) -- to fetch sugar quantity
columns.Bound(x => x.ingredientList.Find(x=>x.id=="4").quantity) -- to fetch salt quantity
但是上述查询并未获取数量,尽管这些值在从控制器发送的模型中可用。 请建议如果我错过了任何查询,那么有一天我会在迷宫中解决问题。
答案 0 :(得分:0)
正如注释中所提到的那样,由于kendo网格被设计为work with flat data,因此处理该问题的一种方法是将模型展平。 假设我们将使用ViewModel EatableSSOVM
public class EatableSSOViewModel
{
public int id {get;set;}
public string name{get;set;}
public string sugar {get; set;}
public string salt{get; set;}
public string oil{get; set;}
}
使用LINQ映射查询糖,盐和油的值,并将网格绑定到List<EatableSSOViewModel>
然而,根据link,它讨论了网格的客户端模板,一种选择可能是做类似以下的事情
columns.Template( @<text>
@item.ingredientList.Find(x=>x.id=="2").quantity
</text>
);
在模板中,您可以编写Razor语法,并且几乎可以做很多事情,这些事情会导致该列可以绑定到的字符串输入。