You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kendo UI ListBox移动项时添加undefined问题求助

Kendo UI ListBox 转移项显示undefined问题解决

问题场景

使用jQuery版Kendo UI 2021.1.119版本,ListBox组件初始化及初始状态显示正常,但转移项时原ListBox的项被移除,目标ListBox添加的却是undefined。已配置connectWith关联两个组件,初始数据显示符合预期。

问题根源

Kendo ListBox的connectWith属性要求传入目标ListBox的CSS选择器或DOM元素,而非自定义的name属性值。当前代码中connectWith: modelUserRoles.listBox.selected.name传入的是字符串listbox-roles-selected,这不是有效的CSS选择器(缺少#前缀),导致组件无法正确定位目标ListBox的数据源,转移时无法获取有效数据项,最终显示undefined。

解决方案

将connectWith的值改为目标ListBox的CSS选择器(即你定义的selector属性值),确保组件能正确关联到目标ListBox。

修正后的代码

{
    listBox: {
        available: {
            name: 'listbox-roles-available',
            selector: '#listbox-roles-available',

            element: function() {
                const element = $(this.selector);
                return element;
            },
            init: function () {
                const element = this.element();
                if (element) {
                    element.kendoListBox({
                        // 修正:使用目标ListBox的选择器而非自定义name
                        connectWith: modelUserRoles.listBox.selected.selector,
                        dataTextField: 'RoleName',
                        dataValueField: 'RoleId',
                        toolbar: {
                            tools: ['transferTo', 'transferFrom', 'transferAllTo', 'transferAllFrom']
                        }
                    });
                }
                return this.widget();
            },
            setItems: function (items) {
                items = items || [];
                const listbox = this.widget();
                listbox.remove(listbox.items());
                for (let item of items) {
                    listbox.add(item);
                }
            },
            widget: function () {
                const element = this.element();
                return element?.data('kendoListBox');
            }
        },
        selected: {
            name: 'listbox-roles-selected',
            selector: '#listbox-roles-selected',

            element: function() {
                const element = $(this.selector);
                return element;
            },
            init: function () {
                const element = this.element();
                if (element) {
                    element.kendoListBox({
                        dataTextField: 'RoleName',
                        dataValueField: 'RoleId'
                    });
                }
                return this.widget();
            },
            setItems: function (items) {
                items = items || [];
                const listbox = this.widget();
                listbox.remove(listbox.items());
                for (let item of items) {
                    listbox.add(item);
                }
            },
            widget: function () {
                const element = this.element();
                return element?.data('kendoListBox');
            }
        }
    }
}

额外提示

如果目标ListBox的初始化时机晚于当前组件,也可以直接传入目标组件的DOM元素引用(modelUserRoles.listBox.selected.element()),避免选择器查找的潜在问题,前提是确保目标元素已存在于DOM中。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:27:40