【问题标题】:Kendo multi-select with tab key selection剑道多选与 Tab 键选择
【发布时间】:2015-06-02 15:24:43
【问题描述】:

我正在尝试实现一项功能,以通过服务器过滤在 kendo 的多选控件中选择一个项目。当用户在所选项目上按下选项卡时。这是我的kepdown事件代码:

if (e.keyCode === 9) {
       var selectedItem = multiSelect.current();

       if (selectedItem) {

            var selectedIndex = selectedItem.data("idx");

            if (selectedIndex >= 0) {

                var currentValue = multiSelect.value().slice();    
                var dataitems = multiSelect.dataSource.view();
                var selectedDataItem = dataitems[selectedIndex];

                multiSelect.dataSource.filter({});
                currentValue.push(selectedDataItem.relatedId);
                multiSelect.value(currentValue);

                multiSelect.trigger("change");
            }
         }
      }

但只要我在相同的数据视图中搜索它就可以正常工作,即假设我选择了两个以 Cloud 开头的值,然后我选择了一个以 App 开头的值,然后 kendo 将删除以 Cloud 开头的前两个值,并且控件将包含最后只选择一个值。

我调试了剑道的代码,发现剑道函数_index中的问题,因为它在dataSource.view中找到了值

我在http://dojo.telerik.com/OtAvi 重新创建了这个问题

【问题讨论】:

    标签: javascript jquery kendo-ui telerik kendo-multiselect


    【解决方案1】:

    您的代码不起作用,因为您在数据源中将serverFiltering 设置为true

    dataSource: {
        type: "odata",
        serverFiltering: true,
        transport: {
            read: {
                url: "http://demos.telerik.com/kendo-ui/service/Northwind.svc/Products",
            }
        }
    },
    

    由于正在服务器上过滤数据,调用multiSelect.dataSource.filter({}); 只是清除已经过滤的数据。话虽如此,当您调用multiSelect.value(currentValue); 时,只能选择当前过滤 数据源中的值。这导致选择只保留当前数据视图中的项目。

    除非您有充分的理由不这样做,否则您最简单的解决方法是将serverFiltering 设置为false

    【讨论】:

    • 感谢您的回复。我无法摆脱服务器过滤,因为我们一次查询 128 条记录,因此如果第一次加载时未加载某些内容,则必须从服务器获取。
    • 当我使用鼠标选择一个值时它工作正常,所以一定有剑道的点击功能在做我没有做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多