Обычное поведение автозаполнения KendoComboBox не работает при подписке на привязку к данным

У меня есть проект, который не был разработан мной. Технологии проекта: ASP.NET MVC, jQuery, Bootstrap и KendoUI. И у него есть небольшая проблема.

KendoComboBox автоматически дополняет текст текстом источника данных JSON, пока вы печатаете. Это потрясающе! Но если вы подпишетесь на событие DataBound для его обработки, это автозаполнение не будет работать правильно. Он стирает то, что вы печатаете. И это вызывает некоторую ярость у пользователей.

Это окно одинаково для создания нового реестра, а также для редактирования некоторого существующего реестра... Итак, подписанный DataBound выполняет работу по выбору одного элемента в поле со списком при редактировании.

И нормальное поведение ComboBox должно автоматически дополняться при вводе, если мы создаем новый.

Это Новое окно. Автозаполнение не работает с подпиской DataBound: Создайте новый — я хочу включить автозаполнение

Это окно редактирования (то же самое, но загруженное). Редактировать выбранный — работает с DataBound

Если я удалю DataBound, автозаполнение ComboBox будет работать нормально: AutoComplete работает

Это мой 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 не получает jsondata из локального источника

Демонстрации пользовательского интерфейса Kendo — ComboBox / Основное использование

Документация по пользовательскому интерфейсу Kendo - ComboBox - Events - DataBound

KendoUI и json

пользовательский интерфейс кендо : как удалить элемент данных источника данных, связанный с некоторым полем со списком, внутри события dataBound поля со списком

Выбор элемента в поле со списком с привязкой к данным

Я также просмотрел несколько сообщений на Kendo UI Forum.

Я обновил jQuery и KendoUI и все еще сохраняется...

Я новичок в KendoUI, и я только что исправил некоторые проекты ASP.NET MVC, поэтому пока не знаю, как решить эту проблему. Пожалуйста, если кто-то может помочь или дать мне направление, я буду благодарен.

О, да, я хочу исправить другие Комбо с той же проблемой...

P.S.: Если я выберу значение, нажав на него, я могу работать здесь, но это непродуктивно.

Надеюсь, я достаточно ясно выразился. Спасибо за любую помощь.


person Lincoln Pires    schedule 27.03.2014    source источник
comment
Вы говорите, что если вы удалите dataBound, он будет работать нормально, но вы пытались оставить его там, но пустым? Вы проверили, что такое сгенерированный код JS (я имею в виду, убедитесь, что e.sender.value... выглядит так, как вы ожидали. Попробуйте также вызвать e.sender.value("some literal") в dataBound и посмотрите, работает ли это.   -  person OnaBai    schedule 28.03.2014


Ответы (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, а в попытке установить для него значение. .

Решением было изменить DataBound для Value, и оно отлично работает!

Надеюсь, это поможет кому-то еще (даже это просто).

person Lincoln Pires    schedule 04.04.2014
comment
Большое спасибо, друг! Я только что столкнулся с той же проблемой. Я по-прежнему считаю, что dataBound также должен работать, поскольку данные привязываются только один раз на стороне клиента. Событие не должно запускаться каждый раз, когда вы активируете поле со списком. Более того, я обнаружил, что dataBound тоже работает, но только если вы очень быстро вводите свой текст в поле со списком. Странное поведение это... - person Krisztián Balla; 21.05.2014