jQWidgets Forums
Forum Replies Created
-
Author
-
February 7, 2013 at 2:30 pm in reply to: jqxTree Load on Demand with Ajax: re-open issue jqxTree Load on Demand with Ajax: re-open issue #14859
Hi Dimitar
Thank you. That was quick. And it works.
Your code relies on a change of type of element e in tree.jqxTree(‘getItem’, e);
First call: HTMLLIELement that represents a tree item => ajax()
Second call: HTMLDivElement => no ajax()I rewrote the bind function as follows:
tree.bind(‘expand’, function(event) {
var parEl = event.args.element;
var $parEl = $(parEl);var childEl = $parEl.find(‘ul:first’).children();
var $childEl = $(childEl);// First call: HTMLLIELement that represents a tree item => ajax()
// Second call: HTMLDivElement => return
if (!tree.jqxTree(‘getItem’, $childEl[0])) {
return;
}var parItem = tree.jqxTree(‘getItem’, parEl)
var parLabel = parItem.label;
$.ajax({
url: ‘edtree_expand’,
data: {‘parent’: parLabel},
success: function (data, status, xhr) {
var items = jQuery.parseJSON(data);
tree.jqxTree(‘addTo’, items, $parEl[0]);
tree.jqxTree(‘removeItem’, $childEl[0]);
}
});return true;
});However, the fact that I can rely on the fact the *all* labels in my tree are different allows the following:
tree.bind(‘expand’, function(event) {
var parEl = event.args.element;
var $parEl = $(parEl);
var childEl = $parEl.find(‘li’);
var $childEl = $(childEl);var firstChildItem = tree.jqxTree(‘getItem’, $childEl[0]);
if (firstChildItem.label != loadingLabel.label)
return; // already loadedvar parItem = tree.jqxTree(‘getItem’, parEl);
$.ajax({
url : ‘edtree_expand’,
data: {‘parent’: parItem.label},
success : function(jsonData, status, xhr) {
tree.jqxTree(‘removeItem’, $childEl[0]);var childItems = jQuery.parseJSON(jsonData);
// time to render in jqxTree addTo is a problem:
tree.jqxTree(‘addTo’, childItems, parEl);
}
});
return true;
});Don’t know what I prefer. Anyway, my issue is solved. Thanks again!
Best regards,
René -
AuthorPosts