【问题标题】:Kendo Autocomplete Displays Two Suggestion ListsKendo 自动完成显示两个建议列表
【发布时间】:2014-04-16 14:24:52
【问题描述】:

我的 Kendo 自动完成控件成功检索到 Json 列表。不幸的是,它两次调用 MVC 控制器方法并创建了两个建议列表。重复列表直接显示在第一个列表的后面。当从第一个建议列表中选择一个值时,该列表会消失,但重复的列表仍然可见。我正在为自动完成控件使用包装器,如下所示。我已经确认没有在任何页面脚本中引用该控件。该控件位于一个局部视图中,该局部视图被一次性添加到一个 cshtml 视图中 (@{ Html.RenderPartial("_AddLineItem"); })。

@(Html.Kendo().AutoComplete()
     .Name("CategorySearch")
     .DataTextField("CategoryName")
     .Filter("contains")
     .DataSource(source =>
     {
         source.Read(read =>
         {
             read.Action("PopulateCategories", "Default");
         })
         .ServerFiltering(false);
    })
)

生成的 HTML 显示建议列表两次,但关联的输入控件只存在一次。以下标签在生成的 HTML 中出现了两次(这些是建议列表的标签,它们还包含 li 标签和结束 div 标签,从下面粘贴的 HTML 中删除):

<div class="k-animation-container" style="left: 431.13px; top: 405.69px; width: 511px; height: 206px; overflow: hidden; padding-right: 2px; padding-bottom: 4px; padding-left: 2px; margin-left: -2px; display: none; position: absolute; z-index: 10002;">

有人知道这里发生了什么吗?

【问题讨论】:

  • 它在调用控制器?我认为ServerFiltering(false) 不会允许这种情况发生。您使用的是什么 JQuery 版本,如果不是正确的建议 JQuery 版本,我会遇到类似的问题
  • 我们使用的是 1.7.1(有点落后,但网站上的其他内容需要该版本)。我相信将 ServerFiltering 设置为 false 只会阻止调用服务器以获取新的过滤结果。我会尝试更新版本的 jquery 看看它是否有效果。感谢您的想法!
  • 更改 JQuery 版本并没有解决问题,但它确实让我想到了这里发生的事情。该控件位于 JQuery UI 对话框中。事实证明,它们会导致在浏览器中创建对话框时呈现内容。这意味着位于 JQuery UI 对话框中的 Kendo 自动完成控件在页面加载时呈现,然后在创建对话框时再次呈现。因此,HTML 中出现了两个建议列表。我删除了 JQuery 对话框并将 Kendo 自动完成控件移动到 Kendo 模态窗口,问题就解决了。

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


【解决方案1】:

根据我添加的评论,答案是避免将 Kendo 自动完成控件放在 JQuery UI 对话框控件中。该对话框强制自动完成控件在浏览器中呈现两次。我已经在 Internet Explorer 和 Firefox 中确认了这一点。可以合理地假设其他浏览器也会发生相同的行为。

【讨论】:

  • 是的,可以。我知道幕后发生的事情不是你帖子的一部分。我想也许你定义了 dataSource 两次或什么的。
猜你喜欢
  • 2018-04-27
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 2012-03-12
相关资源
最近更新 更多