I have a kendoListBox with 12,000 items. This is connected with another kendoListBox and has draggable enabled. Each listbox item has a template applied. The listbox is inside of a modal. When I click a button to open the modal there is a 3 second delay for the modal to open. Then when I try to drag an item or click the arrow buttons to move the item to the opposite list there is another 3 second delay before anything happens. The issue occurred when I changed from a list with only a couple hundred items to this large list. I had this problem with some dropdown boxes and fixed those with virtualization but virtualization does not appear to be available or work here. How do I increase performance so that these components are usable?
<div id="baseModal"> <div class="modal-content"> <div class="modal-header"> <div id="baseModalTitle" class="modal-title">My Modal</div> </div> <div class="modal-body"> <div id="exceptions" class="kendo-dnd-component"> <div class="dnd-list-boxes"> <div class="available-options-container"> <label for="availableItems">Applies To</label> <span class="k-list-filter"> <input id="availableItemsSearchBox" class="k-textbox"><span class="k-icon k-i-zoom"></span> </span> <select id="availableItems" class="browser-default"></select> </div> <div class="selected-options-container"> <label for="selectedItems">Excludes</label> <span class="k-list-filter"> <input id="selectedItemsSearchBox" class="k-textbox"><span class="k-icon k-i-zoom"></span> </span> <select id="selectedItems" class="browser-default"></select> </div> </div> </div> </div> </div> <div class="modal-footer"> <div class="right-align"> <button type="button" class="modal-close waves-effect btn-flat">Cancel</button> <button type="button" class="btn waves-effect ">Accept</button> </div> </div></div><script>function createItemsDragLists() { // List Boxes $("#availableItemsSearchBox").on("input", function (e) { var listBox = $("#availableItems").getKendoListBox(); var sarchString = $(this).val(); listBox.dataSource.filter({ logic: "or", filters: [ { field: "itemID", operator: "contains", value: sarchString }, { field: "itemName", operator: "contains", value: sarchString } ] }); }); $("#selectedItemsSearchBox").on("input", function (e) { var listBox = $("#selectedItems").getKendoListBox(); var sarchString = $(this).val(); listBox.dataSource.filter({ logic: "or", filters: [ { field: "itemID", operator: "contains", value: sarchString }, { field: "itemName", operator: "contains", value: sarchString } ] }); }); $("#availableItems").kendoListBox({ connectWith: "selectedItems", draggable: true, autoScroll: true, dropSources: ["selectedItems"], toolbar: { position: "right", tools: ["transferTo", "transferFrom", "transferAllTo", "transferAllFrom"] }, selectable: "multiple", dataSource: items, template: "<span class='listItemID'>#: data.itemID #</span><span class='listItemName'>#: data.itemName#</span>", valueTemplate: "#: itemName #", dataTextField: "itemName", dataValueField: "itemID" }); $("#selectedItems").kendoListBox({ connectWith: "availableItems", draggable: { placeholder: function (element) { return element.clone().css({ "opacity": 0.3, "border": "1px dashed #000000" }); } }, dropSources: ["availableItems"], selectable: "multiple", template: "<span class='listItemID'>#: data.itemID #</span><span class='listItemName'>#: data.itemName#</span>", valueTemplate: "#: itemName #", dataTextField: "itemName", dataValueField: "itemID" });}</script>