2016-01-14 3 views
0

Я пытаюсь применить разбиение на страницы в jq treeGrid. Я написал специальный код для разбивки на страницы, как только «treeGrid»: true, тогда элементы уровня 1, то есть дочерние элементы, не отображаются, а когда «treeGrid»: false, то разбиение на страницы работает, но дочерний элемент в дереве также отображаются как элементы уровня 0.jqGrid treeGrid, сторона клиента Разбиение страницы не работает

Может кто-то пожалуйста, помогите мне out.`

"rowNum":2, 
    "rowList":[2,5,10,20], 
"loadComplete": function() { 
        var i, myPageRefresh = function(e) { 
         var newPage = $(e.target).text(); 
         $("#tree").trigger("reloadGrid",[{page:newPage}]); 
         e.preventDefault(); 
        }; 

        $($("#tree")[0].p.pager + '_center td.myPager').remove(); 
        var pagerPrevTD = $('<td>', { class: "myPager"}), prevPagesIncluded = 0, 
         pagerNextTD = $('<td>', { class: "myPager"}), nextPagesIncluded = 0, 
         totalStyle = $("#tree")[0].p.pginput === false, 
         startIndex = totalStyle? this.p.page-2*2: this.p.page-2; 
        for (i=startIndex; i<=this.p.lastpage && (totalStyle? (prevPagesIncluded+nextPagesIncluded<2*2):(nextPagesIncluded<2)); i++) { 
         if (i<=0 || i === this.p.page) { continue; } 

         var link = $('<a>', { href:'#', click:myPageRefresh }); 
         link.text(String(i)); 
         if (i<this.p.page || totalStyle) { 
          if (prevPagesIncluded>0) { pagerPrevTD.append('<span>,&nbsp;</span>'); } 
          pagerPrevTD.append(link); 
          prevPagesIncluded++; 
         } else { 
          if (nextPagesIncluded>0 || (totalStyle && prevPagesIncluded>0)) { pagerNextTD.append('<span>,&nbsp;</span>'); } 
          pagerNextTD.append(link); 
          nextPagesIncluded++; 
         } 
        } 
        if (prevPagesIncluded > 0) { 
         $($("#tree")[0].p.pager + '_center td[id^="prev"]').after(pagerPrevTD); 
        } 
        if (nextPagesIncluded > 0) { 
         $($("#tree")[0].p.pager + '_center td[id^="next"]').before(pagerNextTD); 
        } 
       } 
    ` 

ответ

0

TreeGrid не поддерживают разбиение на страницы. Это собственное ограничение на реализацию. Все сложенные элементы будут удерживаться на странице скрытой. Кроме того, отображение TreeGrid со многими уровнями действительно проблематично в TreeGrid.

Вы можете представить себе следующую структуру

t0 
    t11 
    t2 
     t4 
     node1 
    t12 
    t2 
     t4 
     node2 

Что должно отображаться в случае размер страницы 5 (rowNum: 5) или даже в случае rowNum: 2, как вы используете? Что-то вроде

 node1 
     node2 

или

 t4 
     node1 
     t4 
     node2 

Даже rowNum: 5 может показать что-то вроде

t2 
     t4 
     node1 
    t2 
     t4 
     node2 

, где один не видите, что node1 и node2 имеют разные родители на уровне 1.

Это должно быть cl Ухо, один всегда должен отображать полный путь до корневого элемента:

t0 
    t11 
    t2 
     t4 
     node1 

, но один должен иметь rowNum больше, так как числа уровней элементов дерева.

Проблема будет намного сложнее, если вы сначала попытаетесь отобразить свернутые элементы, но затем пользователь нажимает на расширение узла, и он должен генерировать изменение страницы, чтобы оставаться внутри размера страницы, определенного rowNum.

Я попытался объяснить вам, что реализация разбиения на страницы в TreeGrid, вероятно, действительно невозможна. Это было бы возможно, то только с большим количеством ограничений, и можно было бы сразу привести примеры, где реализация отображает действительно ужасные результаты.

+0

то, что вы говорите, верно, Олег, но если мы делаем разбивку на страницы для предметов уровня 0, то ограничений не будет. И мы можем получить желаемые результаты. Если вы понимаете, что я хочу вам объяснить, есть ли решение? так, t0 t1 t2 t3 t4 t0 t1 t2 t3 –

+0

@RahulPrakash: Я пытался объяснить вам, что 1) ** нет разбивки на страницы ** может быть тоже хорошо; 2) если вы предложили бы один путь реализации, то я мог бы предложить вам немедленно и пример данных дерева, где ваше решение будет выглядеть не очень хорошо. Если бы вы и я выбрали одну реализацию, которая была бы достаточно хороша для нас, тогда на нее придет 3-й человек, у которого будет другое мнение. – Oleg

Смежные вопросы