Kendo ui 将treeview中的复选框与使用远程数据源的复选框绑定
让我来安排一个情况。在这种情况下,我需要在表单上显示几个复选框,这些复选框本质上是分层的,其中一些属于一个类别,另一些属于第二个类别,以此类推。我的第一个想法是使用带有复选框的KendoUI treeview。 关于这一点,我有几个问题:Kendo ui 将treeview中的复选框与使用远程数据源的复选框绑定,kendo-ui,kendo-treeview,Kendo Ui,Kendo Treeview,让我来安排一个情况。在这种情况下,我需要在表单上显示几个复选框,这些复选框本质上是分层的,其中一些属于一个类别,另一些属于第二个类别,以此类推。我的第一个想法是使用带有复选框的KendoUI treeview。 关于这一点,我有几个问题: 显然,在表单加载中会出现一些复选框需要被选中的情况,因为它们来自数据源。当我定义新的kendo.data.hierarchycalDataSource时,有一个属性允许我指定数据源中定义层次结构的属性“ParentID”,另一个属性通知特定项是否有任何子项“h
$(e.node).find(“:checkbox[isselected='true']).prop(“checked”,true);
这样做的目的是检查节点中的复选框,并检查它们是否具有名为“isselected”(我使用复选框模板填充)的属性,如果该属性设置为true
,则选中该复选框。这是正常的,但当我想将复选框发回服务器时,问题就出现了。通过上述代码选择的复选框不会反映在treeview的数据源中。现在我得想办法了。我想知道是否有一个更优雅的解决方案,而不是我正在使用的方法:手动选中复选框->在每个复选框上触发事件,以更新其“isselected”属性或treeview数据源->在发布值时获取所有选中值
感谢您的帮助。在等待有人为此提供智能解决方案时,让我添加我所发现的内容,以使此工作正常进行,从而帮助遇到相同问题的人 请看下面由KendoUI团队的Atanas提供的答案,他在其中解释了如何访问数据源项,并使用适当的属性标记其中的特定项。这对于在用户更改特定复选框的选项后手动更新数据源非常有用 还可以查看以下内容,以了解如何正确构造复选框模板,从而使其能够正确回发
有了这两个技巧,我就能够将复选框的ID发回控制器。视图端执行此操作的JavaScript代码总数现在约为80行,包括模型定义。虽然这还不算太多,但如果有人可以推荐一种更聪明的方法,这仍然太多。嗨,默认情况下,treeview使用一个名为checked的属性 因此,在您的viewmodel中
public class MenuItemViewModel
{
public bool @checked { get; set; }
}
然后,当您从数据库填充viewmodel时,确保它返回正确的状态
如果不想将选中项添加到viewmodel中
public class MenuItemViewModel
{
public bool @checked { get; set; }
}
然后可以将其映射到数据源上
dataSource: new kendo.data.HierarchicalDataSource({
data: kendo.observableHierarchy([]),,
schema: {
model: {
fields: {
checked: {from: "WHATEVERYOUWANT", type: "boolean"}
}
}
}
}),
dataTextField: "Name",
checkboxes: true
C#视图模型