Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с иерархией (https://javascript.ru/forum/misc/68119-rabota-s-ierarkhiejj.html)

AlexTrader 27.03.2017 11:29

Работа с иерархией
 
Доброго времени суток, форумчане! Помогите плиз, разобраться с Kendo treeView, уже неделю бьюсь, весь инет просмотрел, но решения так и не найдено...
Суть вопроса:
1.Есть дерево
var $tv = $('#' + treeviewId).kendoTreeView({
                checkboxes: {
                    checkChildren: true
                },
                check: function (e) {
                    getNodes(e.node);
                    onCheck();
                },
                dataBound: function (e) {
                    $tv.expand(".k-item");
                },
                dataSource: dataSource,
                dataTextField: "Title",
                dataValueField: "Id",
               
            }).data("kendoTreeView")

2.Есть <input type="text" id="InputForIds">
3.Есть <textarea type="text" id="ForTextOfSelectedNodes"></textarea>

AlexTrader 27.03.2017 11:31

Задача 1: айдишники выбранных записей складываются в input, а их текс складывается в textarea

AlexTrader 27.03.2017 11:37

Главное не только лейбл нода, но и путь до него (родителей)

AlexTrader 27.03.2017 11:39

Делаю это так:
function getNodes(node) {
                //var ids = [];
                var texts = [];
                var item = $tv.dataItem(node);
                $('#' + idInputId).val(item.Id);
                //ids.unshift(item.Id);
                texts.unshift(item.Title);
                getParentsNode(node, texts);
                var res = $('#' + titleInputId).val();
                $('#' + titleInputId).val(res + '\n' + texts.join('\\'));
            };
            function getParentsNode(node, texts) {
                var parentItem = $tv.dataItem($tv.parent(node));
                if (parentItem != undefined) {
                    //ids.unshift(parentItem.Id)
                    texts.unshift(parentItem.Title)
                    getParentsNode($tv.parent(node), texts);
                }
            };

AlexTrader 27.03.2017 11:41

function checkedNodeIds(nodes, checkedNodes) {
                for (var i = 0; i < nodes.length; i++) {
                    if (nodes[i].checked) {
                        checkedNodes.push(nodes[i].id);
                    }

                    if (nodes[i].hasChildren) {
                        checkedNodeIds(nodes[i].children.view(), checkedNodes);
                    }
                }
            }

        // show checked node IDs on datasource change
            function onCheck() {
                
                var checkedNodes = [];

                checkedNodeIds($tv.dataSource.view(), checkedNodes);

                if (checkedNodes.length > 0) {
                    $('#' + idInputId).val(checkedNodes);
                } else {
                    $('#' + idInputId).val('');
                    $('#' + titleInputId).val('');
                }
            }

AlexTrader 27.03.2017 11:43

Нужный текст добавляется в textarea, но если снять галочку то текст не убирается, как поступить?

AlexTrader 27.03.2017 12:21

Очень прошу помощи, СОС!!!

Alexandroppolus 27.03.2017 13:35

AlexTrader,
неплохо бы сделать нормальную заготовку. Чтобы можно было открыть и посмотреть. Например, в jsfiddle (поскольку редактировать понадобится).
Там всё настроить, библиотеки подключить (по возможности несжатую версию, чтобы дебаггером легко было зайти).

Ты пойми - настраивать самостоятельно всю эту кухню никто не будет.

AlexTrader 27.03.2017 14:16

Alexandroppolus,
Спасибо большое за подсказку, вот http://jsfiddle.net/NZq4A/81/

AlexTrader 27.03.2017 14:18

http://jsfiddle.net/NZq4A/83/
немного обновил

AlexTrader 27.03.2017 14:21

Alexandroppolus,
Если галочка (checkbox) отмечен то айдишники в input пытаюсь сложить, а text в textarea, если галочка снята то убрать эту запись из полей

AlexTrader 27.03.2017 14:22

Но что то не работает...

AlexTrader 27.03.2017 14:47

Гуру JS есть какие мысли?


Часовой пояс GMT +3, время: 20:02.