1

我在我的应用程序中使用了 Kendo ComboBox 并定义了控件的标记,如下所示:

@(Html.Kendo().ComboBox().Name("GroupUserName")
    .Placeholder("- Select Group -")
    .Suggest(true)
    .BindTo(
        (Model.Groups ?? new[] { Model.Group })
            .Select(i => new { i.GroupName, i.GroupUserName })
    )
    .DataTextField("GroupName")
    .DataValueField("GroupUserName"))

我知道 BindTo 方法中绑定了 2 条记录,这些记录正在传递给客户端组件。

jQuery(
  function(){
    jQuery("#GroupUserName").kendoComboBox({"dataSource":   
       [{"GroupName":"membershipgroup01","GroupUserName":"membershipgroup01"},
       {"GroupName":"publicgroup01","GroupUserName":"publicgroup01"}]
       ,"dataTextField":"GroupName","dataValueField":"GroupUserName",
       "placeholder":"- Select Group -","suggest":true
     });
});

但是,当我点击下拉菜单时,组合框没有显示任何内容。没有下拉菜单可以让我选择一个值。看这张图片:

组合框不显示下拉

单击下拉选择器时不会出现下拉菜单。为什么?

我正在使用 JQuery 1.8.2,以及 kendo.all 和 kendo.aspnetmvc 脚本......

4

2 回答 2

0

您正在绑定到没有字段名称的匿名类型。Kendo 没有任何东西可以抓取,因为您告诉它绑定的对象没有名为GroupNameand的字段GroupUserName

从它的外观来看,您根本不需要绑定到匿名类型。所以这:

.BindTo(
    (Model.Groups ?? new[] { Model.Group })
            .Select(i => new { i.GroupName, i.GroupUserName })
)

应该:

.BindTo(
    (Model.Groups ?? new[] { Model.Group })
)

如果由于某种原因您确实需要绑定到匿名类型,您可以为字段指定适当的名称:

.BindTo(
    (Model.Groups ?? new[] { Model.Group })
            .Select(i => new { GroupName = i.GroupName, GroupUserName = i.GroupUserName })
)
于 2013-03-07T05:36:17.743 回答
0

对我来说,这是 JQuery UI 和 Kendo UI 之间的冲突。当我删除对 JQuery UI 的引用时,它起作用了。

于 2015-05-12T22:29:55.563 回答