Reputation: 767
I have a kendo multiselect with serverFiltering set to 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'
}
}
}
}
);
What I need
I have already saved some data selected in this in an object. I want to set this values in this multiselect, say on click of a button.
This is the format i saved the selected items.
searchItem.TeamMember = "[{"ID":572053,"Text":"Account, Test"},{"ID":830620,"Text":"07test, Test"}]"
What I tried so far? I try to set the value to the multiselect like this
$("#ddlAnalysisTeamMember").data("kendoMultiSelect").value($.parseJSON(searchItem.TeamMember));
But its not setting the value. Then I tried with setting the datasource like this.
$("#ddlAnalysisTeamMember").data("kendoMultiSelect").setDataSource($.parseJSON(searchItem.TeamMember));
This set the value in multiselect, but auto suggest is not working. when we type, there is no search happening in multi select.
Is there anything else I miss? Do i have to save it in any other format? What other methods to set value to a multiselect with server filtering?
Upvotes: 1
Views: 1719
Reputation: 767
Finally I found something that is working for me.
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([]);
}
}
This solve my issue. Is there any better way to improve this?
Upvotes: 1