Как использовать сортируемую функциональность пользовательского интерфейса jQuery для таблицы с отложенной загрузкой? - PullRequest
0 голосов
/ 25 октября 2011

Мне нужно создать таблицу, которая использует ленивую загрузку вместо подкачки для динамического отображения содержимого сверх начальной загрузки , а можно сортировать с помощью сортируемой функциональности пользовательского интерфейса jQuery.

Ленивая загрузка осуществляется путем проверки scrollTop и scrollHeight, чтобы определить, насколько близко пользователь находится к нижней части страницы. Когда они подходят достаточно близко, я делаю AJAX-вызов, чтобы получить другой набор данных, который я добавляю в виде строк таблицы в конец таблицы.

У меня в TABLE реализована сортировка пользовательского интерфейса jQuery, но проблема в том, что она не позволяет мне перетаскивать TR за последним TR в исходном TABLE. Он запоминает, какой ТР был последним ребенком, а затем мешает мне выйти за пределы этого.

В следующий раз, когда я пытаюсь перетащить TR, он знает, где находится новый конец, но я сталкиваюсь с той же проблемой, когда загружаю больше.

Я хочу, чтобы пользователь перетаскивал TR, ТАБЛИЦА может лениво загружать некоторые новые данные, а пользователь может продолжать перетаскивать данные на новый набор данных, так как для них это немного неудобно. продолжайте опускаться, чтобы снова начать перетаскивание.

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

ОБНОВЛЕНИЕ: Я попытался использовать опцию connectWith. Вместо того чтобы добавлять динамически загруженные строки в один и тот же TBODY, я вместо этого помещал их в свой собственный TBODY, который также можно сортировать, и настраивал как новый, так и исходный с параметром connectWith (один и тот же класс для всех элементов TBODY). К сожалению, это не сработало иначе. Я все еще могу перетаскивать всю таблицу TABLE после того, как сбросил TR, но не в то время, пока он оставался в исходном контексте перетаскивания. Это расстраивает, так как это не очень удобно для пользователя.

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

Вы пробовали звонить refresh на свой сортируемый после загрузки новых предметов в?

$('#your-sortable').sortable('refresh');

jsfiddle действительно помог бы здесь =)

0 голосов
/ 25 октября 2011

Я написал до недели - мой собственный сортировщик jQuery Table: (asc / desc)

function sortTableJquery()
 {
    var tbl =$("#tbl tr");
    var store = [];
    var sortElementIndex = parseFloat($.data(document.body, "sortElement"));

    for (var i = 0, len = $(tbl).length; i < len; i++)
    {
        var rowDom = $(tbl).eq(i);
        var rowData = $.trim($("td",$(rowDom)).eq(sortElementIndex).text());
          store.push([rowData, rowDom]);
    }
    store.sort(function (x, y)
    {
        if (x[0].toLowerCase() == y[0].toLowerCase()) return 0;
        if (x[0].toLowerCase() < y[0].toLowerCase()) return -1 * parseFloat($.data(document.body, "sortDir"));
        else return 1 * parseFloat($.data(document.body, "sortDir"));

    });
    for (var i = 0, len = store.length; i < len; i++)
    {
        $("#tbl").append(store[i][1]);
    }
    store = null;
 }
...