2015-02-26 3 views
1

Я использую extJs4.0, и я создал сетку с разбивкой по страницам, где я загружаю данные в каждом вызове. 25 строк в одной загрузке. Имея текстовое поле в верхней части столбца, чтобы использовать фильтры, но эти фильтры работают только на одной странице, так как я загружаю данные по-умолчанию. Имеет более 3500 строк в БД. поэтому невозможно загрузить все за один раз. Но мое требование состоит в том, чтобы отфильтровать все данные (БД) с значениями обработки. Пожалуйста, посоветуйте мне, как его достичь, или это возможно в extJs для dael с такими огромными данными. Пожалуйста, помогите !!!!Фильтры в магазине с разбиением на страницы в extJS

ответ

2

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

Это передаст параметры фильтра на бэкэнд, поэтому вам нужно будет написать логику, чтобы вернуть отфильтрованный, разбитый на страницы набор данных на сервере (если требуются/заданы параметры фильтра).

Существует базовый пример в Sencha Examples.

UPDATE:

При использовании remoteFilter при применении фильтров к магазину он будет делать запрос на сервер с фильтром Params. Вам нужно будет отфильтровать ваш набор данных на основе этих параметров на вашей стороне сервера.

В PHP вы могли бы сделать что-то вроде этого: (псевдо-код)

<?php 
// Include any db classes or frameworks your using, and anything else you need 
$filters = array(); 

if (isset($_POST['customer_name'])) { 
    $filters[] = array('customer_name' => $_POST['customer_name']) // dont forget to escape it for security 
} 

Вы уже должны быть проходящее пагинация Params в, Так что, когда вы приходите, чтобы получить данные из БД, вы могли бы сделать что-то вроде

$customers = $model->getCustomers($filters, $options); // pass in filter and pagination options 

Это может привести в запросе, такие как

'SELECT * FROM customers WHERE customer_name LIKE '%jones%' LIMIT 20, 20' 

Какие будет возвращать 20 отфильтрованных записей на основе параметров поиска

Трудно дать точный ответ, не зная, что использует ваша серверная сторона, но это должно дать вам идею или даже основу для ваших исследований.

+0

на клавиатуре прослушивателя я использую «store.filter ({anyMatch: true, exactMatch: false, свойство:« versionDetails », значение: strvDetails}); strvDetails введено пользователем. – user23385

+0

Ваш фильтр в порядке, единственная проблема у вас есть: вы не можете делать точный локальный фильтр в разбитом на страницы хранилище, поскольку он загружает только подмножество данных в любой момент времени. Вам либо нужно загружать ВСЕ ВСЕ ваши данные, либо отложить фильтрацию, которая будет динамически применяться на сервере Затем вам нужно разделить отфильтрованные результаты. – Scriptable

+0

можете ли вы предложить мне, как я могу выполнить второй вариант ... – user23385

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