为什么我的Kendo AutoComplete小部件没有绑定到JSON对象?

时间:2014-03-08 00:01:43

标签: c# asp.net-mvc kendo-ui kendo-autocomplete

我在MVC控制器中有以下代码:

public JsonResult ARequest()
{
    Dictionary<string, object> AnObject = new Dictionary<string,object>();
    AnObject["foo"] = new object[] {"item 1", "item 2", "item 3"};
    return Json(AnObject, JsonRequestBehavior.AllowGet);
}

它按预期工作;当我从浏览器调用它时,我得到以下JSON对象:

{"foo":["item 1","item 2","item 3"]}

我有另一个文件,这次使用的是Kendo UI Autocomplete Widget。这是代码:

<input id="products" style="width: 250px" />

/*...*/

$("#products").kendoAutoComplete({
   filter: "contains",
   minLength: 3,
   dataTextField: foo,
   dataSource: {
      type: "odata",
      pageSize: 10,
      transport: {
         read: {
            url: "education-portal/ARequest"
         }
      }
   }
});

根据官方示例herehere

问题是,当我加载页面时,我什么都没得到。自动完成为空,并保持空白。当我在框中输入任何内容时,没有显示任何结果。知道出了什么问题吗?我不能为我的生活看到它。

2 个答案:

答案 0 :(得分:5)

有几个问题:

  • 您不应该定义dataTextField,因为您的值数组不是strings的对象。
  • 您应该说明收到的数据实际上是项目数组。
  • type odata 还是JSON?

应该是这样的:

$("#products").kendoAutoComplete({
    filter: "contains",
    minLength: 3,
    dataSource: {
        type: "json",
        pageSize: 10,
        transport: {
            read: {
                url: "education-portal/ARequest"
            },
            schema : {
                data: "foo"
            }
        }
    }
});

此处示例:http://jsfiddle.net/OnaBai/rSjpS/

答案 1 :(得分:2)

由于您将集合包装在名为foo的字段中,因此应通过 dataSource.schema.data 选项指定它。

e.g。

 dataSource: {
      schema: {
          data: "foo"
      }
 }

您不必指定任何datavaluefield或datatextfield