2013-03-07 44 views
1

我在我的应用程序使用剑道组合框的列表和定义的控件的标记如下:组合框不落下项目

@(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")) 

我知道,有2条记录在BindTo方法的束缚,并将这些传递给客户端组件。

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

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

ComboBox not showing drop down

没有下拉当您单击下拉菜单选择出现。为什么?

我使用jQuery 1.8.2,与kendo.all和kendo.aspnetmvc脚本一起...

+0

控制台中是否有任何JS错误? – 2013-03-07 18:46:50

+0

我没有收到错误... – 2013-03-07 19:32:40

+0

你能解决这个问题吗?我正在经历类似的行为。 – cmour 2015-05-12 20:43:36

回答

0

你没有字段名绑定到一个匿名类型。 Kendo没有任何东西可以抓取,因为你告诉它绑定的对象没有名为GroupNameGroupUserName的字段。

从它看起来,你根本不需要绑定到匿名类型。所以这样的:

.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 }) 
) 
+0

如果它没有字段名称,为什么名称出现在JSON中:'{“GroupName”:“publicgroup01”,“GroupUserName”:“publicgroup01”}'。所以它是从源头推断字段名称。我会给它一个镜头,但我认为我这样做了,并遇到同样的问题。 – 2013-03-07 13:13:18

+0

当你说'.Select(i => new {i.GroupName,i.GroupUserName})'它正在用'i.GroupName'和'i.GroupUserName'的_values_创建一个**全新对象**时,不是该字段的名称。是的,这些名称在您传递的模型中,但不在您绑定的新对象中。那有意义吗? – jebar8 2013-03-07 16:02:18

+0

这没有帮助,仍然存在问题。 – 2013-03-09 01:53:55

0

对于我这是JQuery UI和Kendo UI之间的冲突。当我删除对JQuery UI的引用时,它工作。