Dear support team
I have an interesting phenomenon. We are using a MultiSelect widget with remote data binding. In theory, the data looks like this:
Key: 099
Value: Test1
Key: 100
Value: Test2
etc.
I can select all values just fine and they are posted to the form on the receiving end. When reloading the form, we pre-populate the selected items, by calling ->setValue() with an Array of strings: 099,100.
However, the generated Javascript code for the multiselect will change that to [99,100]. So the 099 will not get selected when shown.
Is this something I can avoid? Do I need to specify anything special for the Key column (so far I have only specified the name of the field and marked it as an IDcolumn).
Here is the generated javascript code, as you can see, the value is set to 99, but gets passed in the PHP array as '099':
<select id="berufsgruppeMultiSelect[]" name="berufsgruppeMultiSelect[]" style="width:500px;"></select><script>jQuery(function(){jQuery("#berufsgruppeMultiSelect\\[\\]").kendoMultiSelect({"dataSource":{"type":"odata-v4","serverFiltering":true,"serverSorting":true,"serverPaging":true,"transport":{"read":{"url":function(data) {return "http://aiislab1.bsl.ch.almanid.com:8180/iswebservice/OData4Service.svc/Attributes('687')/CTVRecords?lang=en&$select=V_Long&SESSIONID=" + encodeURIComponent(cookieSessionID) + "";},"contentType":"application\/json;odata.metadata=minimal","dataType":"json","type":"GET"},"parameterMap":function(options, type) {
if (type === 'read') {
if (options.filter) {
for(var index in options.filter.filters) {
var Filter = options.filter.filters[index];
Filter.value = boolean2string(Filter.value);
if ($.isArray(Filter.filters)) {
for(var arrayIndex in Filter.filters) {
var ArrayFilter = Filter.filters[arrayIndex];
ArrayFilter.field = 'tolower(' + ArrayFilter.field + ')';
ArrayFilter.value = ArrayFilter.value.toLowerCase();
}
} else {
Filter.field = 'tolower(' + Filter.field + ')';
Filter.value = Filter.value.toLowerCase();
}
}
} else {
options.filter = {logic: 'and', filters: [{field: 'tolower(Language)', operator: 'contains', value: 'en'}]};
}
if (options.sort) {
var sortCount = 0;
for(var index in options.sort) {
var Sorter = options.sort[index];
sortCount = 1;
}
}
if (typeof sortCount === 'undefined' || sortCount === 0) {
options.sort = [{field: 'V_Long', dir: 'asc'}];
}
}
return kendo.data.transports['odata-v4'].parameterMap(options, type);}
},"schema":{"model":{"fields":[{"field":"Key"},{"field":"V_Long"}],"id":"Key"}}},"dataTextField":"V_Long","dataValueField":"Key","value":[99],"valuePrimitive":true,"filtering":function (e) {
if (e.filter) {
var value = e.filter.value
var newFilter = {
logic: 'and',
filters: [
{ field: 'tolower(Language)', operator: 'contains', value: 'en' },
{
logic: 'or',
filters: [
{ field: 'id', operator: 'contains', value: value },
{ field: 'V_Long', operator: 'contains', value: value }
]
}
]
}
e.sender.dataSource.filter(newFilter)
e.preventDefault()
}
e.preventDefault()
},"placeholder":"alle Berufsgruppen","itemTemplate":"#: id# (#: V_Long#)","tagTemplate":"#: id# (#: V_Long#)"});});</script>
Thank you for your advice.
Yours,
Ronny