I've noticed then in new version (2016.1.112) of component KendoDropDownList was changed the logic of the change event. In previous version (2015. 3.1111) in the change function I don't have to return the proper value. Below is the razor code that works fine.
...................
<
tr
>
<
td
class
=
"required-label"
>
@Html.LabelFor(m => m.FolderId)
</
td
>
<
td
>
@(Html.Kendo().DropDownList().Name("FolderId")
.HtmlAttributes(new { @class = "select-list" })
.OptionLabel("-- WYBIERZ RODZAJ ZGŁOSZENIA --")
.DataTextField("Description")
.DataValueField("Symbol")
.DataSource(source => source.Read(read => read.Action("GetFolders", "Zgloszenia"))))
</
td
>
</
tr
>
<
tr
>
<
td
class
=
"required-label"
>
@Html.LabelFor(m => m.Subject)
</
td
>
<
td
>
@Html.Kendo().TextBoxFor(m => m.Subject).HtmlAttributes(new { @class = "textboxlong" })
</
td
>
</
tr
>
<
tr
>
<
td
>
@Html.LabelFor(m => m.ForeignCode)
</
td
>
<
td
>
@Html.Kendo().TextBoxFor(m => m.ForeignCode)
</
td
>
</
tr
>
<
tr
>
<
td
class
=
"required-label"
>
@Html.LabelFor(m => m.ProductId)
</
td
>
<
td
>
@(Html.Kendo().DropDownList().Name("ProductId")
.HtmlAttributes(new { @class = "select-list", data_val = "true", data_val_required = "Musisz wybrać odpowiedni program z listy" })
.OptionLabel("-- Wybierz produkt, którego dotyczy zgłoszenie --")
.DataTextField("DescriptionValid")
.DataValueField("Symbol")
.DataSource(source => source.Read(read => read.Action("GetProducts", "Zgloszenia").Data("filterProducts"))
.ServerFiltering(true))
.Enable(false)
.AutoBind(true)
.CascadeFrom("FolderId")
)
</
td
>
</
tr
>
..................
<
script
>
$(function () {
var folderObj = $("#FolderId");
if (folderObj) {
folderObj.data("kendoDropDownList").setOptions({
change: function (e) {
var folderVal = folderObj.val();
if (folderVal == "ZSER") {
$("#versionLabel").removeClass("required-label");
$("#Version").removeAttr("data-val-required");
} else {
$("#versionLabel").addClass("required-label");
$("#Version").attr("data-val-required", "Podanie wersji programu jest wymagane");
}
}
});
}
});
</
script
>
In the new version it turned out that my dropdownlist doesn't work, operator cannot choose the item. Exactly after clicking on, it drop down, but after choosing the item it still remains the previous one. It looks like someone has disabled the control. I've found that if add to my function return value, everything will be OK. My question is if this logic will be developed in the future? Should I always remember to return the proper value? Below is new version of this function.
<
script
>
$(function () {
var folderObj = $("#FolderId");
if (folderObj) {
folderObj.data("kendoDropDownList").setOptions({
change: function (e) {
var folderVal = folderObj.val();
if (folderVal == "ZSER") {
$("#versionLabel").removeClass("required-label");
$("#Version").removeAttr("data-val-required");
} else {
$("#versionLabel").addClass("required-label");
$("#Version").attr("data-val-required", "Podanie wersji programu jest wymagane");
}
}
return folderVal;
});
}
});
</
script
>