【问题标题】:KendoComboBox normal autocomplete behavior not working when databound subscribed订阅数据绑定时,KendoComboBox 正常的自动完成行为不起作用
【发布时间】:2014-03-27 18:52:13
【问题描述】:

我在这里有一个不是我开发的项目。 项目技术:ASP.NET MVC、jQuery、Bootstrap 和 KendoUI。 而且,它有一个小问题。

KendoComboBox 在您键入时使用 JSON 数据源文本自动完成文本。太棒了! 但是,如果您订阅 DataBound 事件来处理它,则此自动完成功能将无法正常工作。它会删除您正在输入的内容。这引起了用户的愤怒。

此窗口与创建新注册和编辑某些现有注册相同... 因此,订阅的 DataBound 会在编辑时选择 ComboBox 中的一项。

而且,如果我们要创建一个新的,ComboBox 的正常行为必须在键入时自动完成。

这是新窗口。自动完成功能不适用于订阅的 DataBound:

这是编辑窗口(相同,但已加载)。

如果我删除 DataBound,ComboBox 的自动完成功能可以正常工作:

这是我的 HTML:

<div class="k-field">
    <div class="k-fieldlabel">Responsável:</div>
    <div style="float: left; width: calc(100% - 100px);">
        <input type="text" id="cboResponsavel" name="Responsavel.Id" style="width: 100%;" required validationmessage="Responsável é obrigatório" />
    </div>
</div>

在我的 document.ready 函数中,我有:

$("#cboResponsavel").kendoComboBox({
dataTextField: "Nome",
dataValueField: "Id",
dataSource: {
    type: "json",
    schema: {
        data: "data",
        total: "total"
    },
    transport: {
        read: {
            url: "/Projeto/Projetos/CarregarResponsaveis",
            dataType: "json"
        }
    }       
},
filter: "contains",
suggest: true,
dataBound:function(e){
    e.sender.value(@(Model == null ? "null" : Model.Responsavel.Id.ToString()))
}
});

我的研究:

KendoCombobox is not fetching Localsource jsondata

Kendo UI Demos - ComboBox / Basic Usage

Kendo UI Docs - ComboBox - Events - DataBound

KendoUI and json

kendo ui: how to remove a dataItem of a dataSource bound to some comboBox, inside combobox dataBound event

Selecting item in databound combobox

我也看过Kendo UI Fórum的一些帖子。

我已经更新了 jQuery 和 KendoUI 并且仍然存在...

我对 KendoUI 很陌生,我刚刚修复了一些 ASP.NET MVC 项目,所以,我现在不知道如何解决这个问题。请,如果有人可以帮助或指导我,我将不胜感激。

哦,是的,我想修复其他有同样问题的 Combo...

P.S.:如果我选择一个值点击它,我可以在这里工作,但这并不高效。

我希望我说得够清楚。感谢您的帮助。

【问题讨论】:

  • 您说如果您删除dataBound 它可以正常工作,但您是否尝试将其留在那里但为空?您是否检查了生成的 JS 代码是什么(我的意思是,验证 e.sender.value... 是否与您预期的一样。尝试在 dataBound 中调用 e.sender.value("some literal") 并查看是否有效。

标签: asp.net-mvc combobox kendo-ui databound kendo-combobox


【解决方案1】:

遇到这个错误!

解决办法跟我一样白痴……哈哈

实际上,我们不需要那个事件。

下面是执行相同操作的代码:

$("#cboResponsavel").kendoComboBox({
dataTextField: "Nome",
dataValueField: "Id",
dataSource: {
    type: "json",
    schema: {
        data: "data",
        total: "total"
    },
    transport: {
        read: {
            url: "/Projeto/Projetos/CarregarResponsaveis",
            dataType: "json"
        }
    }
},
filter: "contains",
suggest: true,
value: @(Model == null ? "null" : Model.Responsavel.Id.ToString())
});

这种行为对新的行为很好,它给我带来了编辑模式下的价值。

Onabai 的评论有助于发现 DataBound 事件不是问题,而是尝试在其上设置 Value。

解决方案是更改 DataBound 为 Value,它工作正常!

希望这对其他人有所帮助(即使这很简单)。

【讨论】:

  • 非常感谢你,伙计!我刚刚遇到了同样的问题。我仍然相信 dataBound 也应该工作,因为数据只在客户端绑定一次。每次激活组合框时不应触发该事件。此外,我发现它似乎也可以使用 dataBound,但前提是您将文本非常快速地输入到组合框中。这是奇怪的行为......
猜你喜欢
  • 2020-05-10
  • 2012-06-02
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多