Сетка кендо с мульти-выделенным текстом - PullRequest
0 голосов
/ 20 мая 2019

Я хочу сделать одно поле как текстовое поле с множественным выделением в моей сетке Kendo, поэтому перейдите по ссылке ниже и скопируйте ее в функцию editorColumnTemplateFunction.Это работает, когда я набираю какой-то текст и ввел его, но если я щелкну за пределами поля или где-либо еще, то введенные данные не будут сохранены в поле выбора.Где я ошибся?Или может ли кто-нибудь помочь мне достичь функциональности по ссылке ниже на Kendo Grid?

https://docs.telerik.com/kendo-ui/knowledge-base/multiselect-as-tagbox

И моя сетка,

 $("#rulesGrid").kendoGrid({
        dataSource: dataSource_RuleGrid,
        height: 200,
        scrollable: true,
        batch: true,
        columns: [
            {
                field: "CustomProperty", title: "Property", width: "80px", editor: propertyDropDownEditor, template: "#=CustomProperty.DisplayName#"
            },
            {
                field: "Operator", title: "Operator", width: "80px", editor: operatorDropDownEditor, template: "#=Operator.DisplayName#"
            },
            {
                field: "Values", title: "Value", width: "100px",
                editor: editorColumnTemplateFunction
            },
            {
                field: "",
                title: "",
                width: "30px",
                template: function (dataItem) {
                    return '<span class="grid-icon"><i class="icon icon-delete" onclick="deleteCustomRule($(this))"></i></span>';
                }
            }
        ],
        editable: { confirmation: false },
        toolbar: kendo.template($("#addRuleTemplate").html()),
        noRecords: {
            template: "No rules found"
        }

    });

И функция editorColumnTemplateFunction,

function editorColumnTemplateFunction(container, options) {
    Valuess = { ValueName: "AD", ValueName: "AD" };
    $('<select id="RulesValue" style="width: 100%;" multiple="multiple"  ></select>').appendTo(container).kendoMultiSelect({
        dataTextField: "ValueName",
        dataValueField: "ValueName",
        //autoBind: false,
        dataSource: {
            data: []
        },
        dataBound: onDataBound
    }).data("kendoMultiSelect");


    function onDataBound(e) {
        $('.k-multiselect .k-input').unbind('keyup');
        $('.k-multiselect .k-input').on('keyup', onClickEnter);
    }
    function onClickEnter(e) {
        if (e.keyCode === 13) {
            var widget = $('#RulesValue').getKendoMultiSelect();
            var dataSource = widget.dataSource;
            var input = $('.k-multiselect .k-input');
            var value = input.val().trim();
            if (!value || value.length === 0) {
                return;
            }

            var newItem = {
                ValueName: value,
                ValueName: value
            };

            dataSource.add(newItem);
            var newValue = newItem.ValueName;
            widget.value(widget.value().concat([newValue]));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...