Вход

Просмотр полной версии : Работа с иерархией


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 есть какие мысли?