Расширение Kendo Treeview и флажок не работает после передачи нового значения из выпадающего списка - PullRequest
0 голосов
/ 07 ноября 2018

новинка в stackoverflow и реализация дерева просмотра. У меня возникает проблема, когда всякий раз, когда я выбираю другое значение из раскрывающегося списка, которое заполняет мое древовидное представление, флажок раскрытия и расширения больше не работает. Но первый раз работает.

Итак, у меня есть вызов ajax, который извлекает параметр из выпадающего списка, чтобы вернуть данные JSON для заполнения моего дерева. Вот мой код. Я стучал головой об этой ошибке, и я также попытался найти какое-то решение в документации по kendo ui, но оно просто не работает. Действительно нужна помощь. Спасибо!

Вот мой код:

dataB1 = @Html.Raw(Json.Encode(ViewData["branchList"]));
reloadNewBranch = @Html.Raw(Json.Encode(ViewData["reloadNewBranch"]));
$('#comboNewBranch').kendoAutoComplete({
    dataSource: dataB2,
    placeholder: "Enter branch name...",
    value: reloadNewBranch
});
//Create TreeView
    function onChange(e) {
        $("body").css("cursor", "progress");
        $('#hiddenPackageArray').val('');
        document.getElementById("textTestpassId").innerHTML = 'At least one(1) template must be selected.';
        $('#treeview').empty();

        $.ajax({
            url: '@Url.Action("LoadOldBranchTemplates", "Home")',
            data: { oldBranchName: $("#comboOldBranch").data("kendoAutoComplete").value() },
            dataType: "json"
        }).done(function (result, textStatus, jqXHR) {

        var viewModel = new kendo.data.HierarchicalDataSource({
            data: result,
            schema: {
                model: {
                    id: "Id",
                    hasChildren: true,
                    children: "Templates"
                }
            }
            });

            $("#treeview").kendoTreeView({
            loadOnDemand: false,
            checkboxes: {
                checkChildren: true
            },
            check: onCheck,
            dataSource: viewModel,
            dataTextField: ["TestPassName", "DisplayName"]
            })

        // gathers IDs of checked nodes
        function checkedNodeIds(nodes, checkedNodes) {
            for (let i = 0; i < nodes.length; i++) {
                if (nodes[i].checked) {
                    checkedNodes.push(nodes[i].Id);
                    let filtered = checkedNodes.filter(function (listOfId) {
                        return listOfId != null;
                    });
                    $('#hiddenPackageArray').val(filtered);
                }
                if (nodes[i].hasChildren) {
                    checkedNodeIds(nodes[i].children.view(), checkedNodes);
                }
            }
        }
        // show checked node IDs on datasource change
        function onCheck(e) {
            console.log("I'm in onSelect function");
            var checkedNodes = Array();
            var treeView = $("#treeview").data("kendoTreeView");
            var message = String();

            checkedNodeIds(treeView.dataSource.view(), checkedNodes);
            console.log("Checkbox changed :: " + this.text(e.node));

            if (checkedNodes.length > 0) {
                message = checkedNodes.join(" ");
            } else {
                message = "No package(s) are selected.";
                $('#hiddenPackageArray').val('');
            }
            $("#result").html(message);
        }
        $("body").css("cursor", "default");
        })
        .fail(function (xmlHttpRequest, textStatus, errorThrown) {
            $('#mainDiv').append('<p>Status: ' + textStatus + '</p>');
            $('#mainDiv').append('<p>Error: ' + errorThrown + '</p>');
            $('#mainDiv').append('<p>' + xmlHttpRequest + '</p>');
        });
    };
...