Как восстановить состояние таблицы, которая была заполнена последующим XHR-запросом - PullRequest
0 голосов
/ 31 марта 2020

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

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

Теперь все идет хорошо с таблицей полных записей (т. Е. Когда пользователь не выполняет действия Расширенный поиск). Я также включил параметр stateSave: true в инициализацию таблицы, чтобы при возврате пользователя со страницы подробностей находить таблицу, когда он ее покинул.

Проблема начинается, когда расширенный поиск выполненный. В этом случае, когда вы переходите на страницу «Подробности» и возвращаетесь к таблице, ее больше нет, поэтому мне нужно запросить новый XHR, используя параметр, который я сохранил в sessionStorage, и это нормально. Затем, однако, мне нужно поставить таблицу, как это было. Как я могу это сделать? Если я добавлю:

var table = $('#mainTable').DataTable();

            $('#mainTable').on('page.dt', function () {
                var page = table.page();
                sessionStorage.setItem('pageTable', page);
                table.state.save()

, а затем используйте этот page для получения таблицы расширенного поиска на странице, с которой пользователь консультировался table.page(parseInt(page)).draw('page') после нового XHR-запроса, вызванного «назад» Кнопка со страницы сведений stateSave: true в таблице полных записей игнорируется. Также я бы хотел сохранить такие вещи, как сортировка столбцов и тому подобное. Существует ли простой способ сохранить текущее состояние таблицы расширенного поиска, когда пользователь нажимает на гиперссылку, и восстановить таблицу точно так же, как это было, когда пользователь возвращается, без выполнения нового запроса расширенного поиска за кулисами, или выполнить, а затем повторно инициализировать таблицу со всеми параметрами (страница, сортировка, прокрутка), активными в тот момент, когда пользователь покинул главную страницу до go до страницы сведений?

1 Ответ

0 голосов
/ 31 марта 2020

По некоторым причинам я не чувствую, что у этого есть простое решение. Восстановление полного состояния таблицы после последующего запроса XHR кажется хлопотным. Я решил, заполнив таблицу через серверный XQuery. Таким образом, stateSave: true будет выполнено, независимо от содержимого таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...