使用服务器过滤在 kendo 多选中预选值

Preselect value in kendo multiselect with server filtering

我有一个 kendo multiselect,serverFiltering 设置为 true。

$("#ddlAnalysisTeamMember").kendoMultiSelect(
        {
            autoBind: false,
            minLength: 3,
            //placeholder: 'User Name',
            dataTextField: 'Text',
            dataValueField: 'ID',
            filter: 'contains',
            delay: 200,
            dataSource: {
                serverFiltering: true,
                transport: {
                    read: {
                        url: _VirDir("GetUsernameMultiAutoComplete", "WidgetsLoad"),
                        dataType: 'json'
                    }
                }
            }
        }
    );

我需要的

我已经在对象中保存了一些数据 select。我想在这个 multiselect 中设置这个值,比如点击一个按钮。

这是我保存 selected 项目的格式。

searchItem.TeamMember = "[{"ID":572053,"Text":"Account, Test"},{"ID":830620,"Text":"07test, Test"}]"

到目前为止我尝试了什么? 我尝试像这样

将值设置为 multiselect
$("#ddlAnalysisTeamMember").data("kendoMultiSelect").value($.parseJSON(searchItem.TeamMember));

但它没有设置值。 然后我尝试像这样设置数据源。

 $("#ddlAnalysisTeamMember").data("kendoMultiSelect").setDataSource($.parseJSON(searchItem.TeamMember));

这在 multiselect 中设置了值,但自动建议不起作用。当我们打字时,没有搜索在 multi select.

中发生

还有什么我想念的吗?我必须以任何其他格式保存它吗?还有哪些其他方法可以通过服务器过滤将值设置为 multiselect?

我终于找到了适合我的东西。

searchItem.TeamMember = "[{"ID":572053,"Text":"Account, Test"},{"ID":830620,"Text":"07test, Test"}]"
LoadMultiselectData($("#ddlAnalysisTeamMember").data("kendoMultiSelect"), searchItem.TeamMember);

LoadMultiselectData = function (kendoMultiSelect, data) {
    if (data != null) {
        var jsonData = $.parseJSON(data);
        if (jsonData.length > 0) {
            var dataIDs = $.map(jsonData, function (n, i) {
                return n.ID;
            });
            kendoMultiSelect.dataSource.data(jsonData);
            kendoMultiSelect.value(dataIDs);
        }
    }
    else {
        kendoMultiSelect.dataSource.data([]);
        kendoMultiSelect.value([]);
    }
}

这解决了我的问题。有没有更好的方法来改善这个?