1

我有一个将 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'
                    }
                }
            }
        }
    );

我需要的

我已经将在此选择的一些数据保存在一个对象中。我想在这个多选中设置这个值,比如点击一个按钮。

这是我保存所选项目的格式。

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

到目前为止我尝试了什么? 我尝试像这样将值设置为多选

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

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

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

这在多选中设置了值,但自动建议不起作用。当我们键入时,多选中不会发生搜索。


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

4

1 回答 1

1

最后我发现了一些对我有用的东西。

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([]);
    }
}

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

于 2016-11-15T06:52:32.233 回答