Когда вы нажимаете Role1 в верхнем списке, он отображает Person 1 и Person 2 один раз.Каждый последующий щелчок по Role1 или Role2 создает дополнительный дубликат в списке под ним.Это почему?Я перепробовал все возможные перестановки частей в KH_ClearKendoListbox, чтобы очистить список перед продолжением, но, похоже, это не помогло.Другая ссылка на эту проблему в переполнении стека предложила использовать setDataSource, но это тоже не помогло.Я застрял и хотел бы знать, почему это происходит в этом сценарии и как это можно решить, чтобы в нижнем списке всегда был только один набор из двух элементов.
<html>
<head runat="server">
<script type="text/javascript">
$(document).ready(function () {
var initDS;
var rolesDS = initDS = new kendo.data.DataSource({
data: [{ id1: 3, name1: "Role1" },
{ id1: 4, name1: "Role2" }]
});
$("#lstRoles").kendoListBox({
dataValueField: "id1",
dataTextField: "name1",
dataSource: rolesDS,
change: onChangeRoles,
}).data("kendoListBox");
function onChangeRoles(e) {
KH_ClearKendoListbox($("#lstIndividuals"));
initDS = new kendo.data.DataSource({
data: [{ id2: 3, name2: "Person 1" },
{ id2: 4, name2: "Person 2" }]
});
$("#lstIndividuals").kendoListBox({
dataValueField: "id2",
dataTextField: "name2",
}).data("kendoListBox").setDataSource(initDS);
}
function KH_ClearKendoListbox(lst) {
var listBox = lst.data("kendoListBox");
if (listBox === undefined) return;
var itemcount = listBox.dataSource._data.length;
for (var i = 0; i < itemcount; i++)
listBox.remove(listBox.items().first());
listBox.refresh();
listBox.clearSelection();
listBox.destroy();
}
});
</script>
</head>
<body>
<form id="form2" runat="server"
style="background-color: cornflowerblue">
<div class="container" style="padding:30px">
<select id="lstRoles" style="width: 265px"></select>
<br />
<select id="lstIndividuals" style="width:
265px; height: 233px">
</select>
</div>
</form>
</body>
</html>