Below is my MultiSelect for a List<long> property of my model. In DataSource Read I am giving a js Function name "userIdFilter"
@(Html.Kendo().MultiSelectFor(m => m.PositionIds)
.Filter(
"Contains"
)
.Name(
"PositionIds"
)
.Placeholder(
"Select Position"
)
.ValuePrimitive(
true
)
.DataTextField(
"Name"
)
.DataValueField(
"Id"
)
.DataSource(d => d.Read(read =>
{
read.Action(
"GetAllPositions"
,
"PositionCodeAjax"
).Data(
"userIdFilter"
);
}).ServerFiltering(
true
))
.HtmlAttributes(
new
{ style =
"width:95%;"
})
this is userIdfilter method in a script tag
<script>
function
userIdFilter() {
console.log($("#Id").val());
setTimeout(() => console.log($("#Id").val()), 100);
return
{ userId: $(
"#Id"
).val() };
}
</script>
This is the numeric text box that has id="Id". I have applied display:none to its parent element
@(Html.Kendo().NumericTextBoxFor(m => m.Id).Enable(
false
))
All these snippets lie in a PopupEditView.cshtml which is called when editing/creating and element from the grid in my index.cshtml file
Now When I call Test it with edit command Edit pop up appears and userIdFilter is called. and value "0" is printed. after 100ms value "1182" is printed. Also my actionMethod recieves value 0.
But when I call userIdFilter() from console it logs value 1182 (the correct value) also object { userId: 1182 } is also logged and after 100ms value 1182 is printed.
Also if I happen to inspect the multiselect in the popup before the request with wrong value for dataSource is sent, Kendo makes a second request with correct value and it works as it should
I just cannot understand this strange behaviour and what is going wrong. Need help