javascript - 在 extJS 中使用分页过滤商店

标签 javascript extjs pagination

我正在使用 extJs4.0,我创建了一个带分页的网格,我在每次调用中加载数据。一次加载 25 行。在列的顶部有文本框以使用过滤器,但是当我按页面加载数据时,这些过滤器只在单个页面上工作。 数据库中有超过 3500 行。所以不能在一次调用中加载所有内容。 但我的要求是用加工值过滤整个数据(DB)。请告诉我如何实现它,或者在 extJs 中是否有可能处理如此庞大的数据。 请帮助!!!!

最佳答案

您需要使用 remoteFilter配置选项。这将委托(delegate)所有过滤在服务器上完成,在整个数据集上,而不是当前加载的集上。

这会将过滤器参数传递给后端,因此您需要编写逻辑以在服务器上返回过滤后的分页数据集(如果需要/设置任何过滤器参数)。

Sencha Examples 中有一个基本示例.

更新:

当您使用 remoteFilter 将过滤器应用到商店时,它会使用过滤器参数向服务器发出请求。您需要根据服务器端的这些参数过滤您的数据集。

在 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
}

你应该已经传递了分页参数,所以当你从数据库中获取数据时,你可以做类似的事情

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

这可能会导致一个查询,例如

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

这将根据搜索参数返回 20 条过滤记录

如果不知道您使用的服务器端是什么,很难提供准确的答案,但这应该会给您一个想法,甚至是您研究的基础。

关于javascript - 在 extJS 中使用分页过滤商店,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28741470/

相关文章:

javascript - Extjs Combobox Typeahead,州名和州代码

javascript - 使用 JavaScript 在按钮中使用 HTML5 下载选项

extjs - 如何防止 extjs 模型/代理在创建时保存空的主 ID

JavaFX 2.2 删除分页的选定页面标签

asp.net-mvc-3 - 在 HtmlHelper 方法中生成正确的 Url

javascript - 为什么我的按钮点击事件没有被触发?

javascript - Vimeo play eventListener 在单击“播放”按钮之前触发

javascript - 如果内部有其他标签,带有 <p> 标签的 jQuery 分页会在单个页面中显示所有页面

javascript - 如何找到一个点的坐标,其中用 Javascript 给出了 2 个点和距离

javascript - 使用 codeiginter 加密库对数据进行编码并使用 js-mcrypt 进行加密