9

我正在使用剑道多选。我想将选定的值加载到多选中。如何在 Java Script 中设置数据值?我有以下脚本:

$('#selectedFilters').kendoMultiSelect({
                    dataSource: data,
                    dataTextField: 'name',
                    dataValueField: 'value',
                    filter: 'contains',
                    placeholder: "Add Filter",
                    delay: 0,
                    minLength: 2,
                    highlightFirst: true,
                    ignoreCase: true,
                    change: function (event) {
                        applyFilters();
                    },
                });
4

3 回答 3

21

您可以使用value()设置值的方法。

例如,给出以下 HTML:

<a href="#" id="button" class="k-button">Select</a>
<input id='selectedFilters'>

和 JavaScript:

var data = [
    { name : "name1", value : "value1" },
    { name : "name2", value : "value2" },
    { name : "name3", value : "value3" },
    { name : "name4", value : "value4" },
    { name : "name5", value : "value5" },
    { name : "name6", value : "value6" }
];
var multiselect = $('#selectedFilters').kendoMultiSelect({
    dataSource    : data,
    dataTextField : 'name',
    dataValueField: 'value',
    filter        : 'contains',
    placeholder   : "Add Filter",
    delay         : 0,
    minLength     : 2,
    highlightFirst: true,
    ignoreCase    : true,
    change        : function (event) {
        console.log("change");
    }
}).data("kendoMultiSelect");

$("#button").on("click", function () {
    console.log("multiselect", multiselect);
    multiselect.value(["value1", "value2", "value6"]);
});

如果单击button多值得到inputname1和。name2name6

编辑如果要添加到当前选定的值,请执行以下操作:

$("#button").on("click", function () {
    var selected = multiselect.value();
    var res = $.merge($.merge([], selected), ["value1", "value2", "value6"]);
    multiselect.value(res);
});

注意:由于某种原因,您不能重用selected数组来设置新值,因此您应该创建一个新值。

检查它在这里运行

于 2013-04-19T21:01:26.447 回答
1

有一种更简单的方法可以做到这一点。所有 kendo 控件都有丰富的客户端 API。所以这里是 MultiSelect 的 API 文档页面 - http ://docs.kendoui.c​​om/api/web/multiselect

现在来解决您的问题-这是我的解决方案:

标记:

<select id="required" multiple="multiple" data-placeholder="Select attendees...">
            <option>Steven White</option>
            <option>Nancy King</option>
            <option>Anne King</option>
            <option>Nancy Davolio</option>
            <option>Robert Davolio</option>
            <option>Michael Leverling</option>
            <option>Andrew Callahan</option>
            <option>Michael Suyama</option>
            <option>Anne King</option>
            <option>Laura Peacock</option>
            <option>Robert Fuller</option>
            <option>Janet White</option>
            <option>Nancy Leverling</option>
            <option>Robert Buchanan</option>
            <option>Margaret Buchanan</option>
            <option>Andrew Fuller</option>
            <option>Anne Davolio</option>
            <option>Andrew Suyama</option>
            <option>Nige Buchanan</option>
            <option>Laura Fuller</option>
        </select>

JavaScript:

// create MultiSelect from select HTML element
var required = $("#required").kendoMultiSelect().data("kendoMultiSelect");

现在为了设置选择框的选定值,您只需要使用 value() 方法。这是代码:要设置单个值:

required.value("Laura Fuller")

要设置多个值:

required.value(["Laura Fuller","Laura Peacock"]);

现在要清除您刚刚将空字符串设置为值的值

required.value("");

现在,如果您想将任何内容附加到已选择的列表中,您可以执行@OnaBai 显示他的代码段的操作。

这就是小部件的全部内容:)

希望这很有用。

于 2013-04-20T14:20:29.113 回答
1

好吧,即使在我得到答案之后,我也很挣扎。My Kendo Grid 有 6,000 多个项目可供选择。它大部分时间都在工作。只是当我更新选择时才引起我的问​​题。

以下代码解决了我的问题:

// Remove previous selected Filters. (This was undocumented method. I got from Kendo)
multiSelect.dataSource.filter({});

// Set the new filters
multiSelect.value(newlySelectedFilters);
于 2013-04-24T17:10:40.270 回答