首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建分页的Drupal表单。(Drupal 6)

创建分页的Drupal表单。(Drupal 6)
EN

Stack Overflow用户
提问于 2013-09-13 15:12:52
回答 1查看 102关注 0票数 0

我正在尝试创建一个表单,在每行上提供一个复选框元素。问题是,我有2000行,这需要一些时间来加载,而且在整个列表中导航也不容易。

有没有办法在Drupal形式中创建某种分页?

EN

回答 1

Stack Overflow用户

发布于 2013-09-17 04:16:27

据我所知,在一个更大的表单上下文中没有内置的字段值分页。相反,您可能希望考虑使用Javascript解决方案,加载所有2000个表单值,但使用JS和CSS隐藏除第一个页面以外的所有页面。然后创建Javascript前进/后退和页面链接,动态隐藏复选框中的第一个“页面”,并加载有问题的页面。

我之所以推荐这样做,而不是AJAX请求只加载前20条记录,然后通过分页程序动态加载更多记录,是因为您必须单独跟踪和存储已检查的值(因为AJAX实际上会丢弃并重新加载接下来的20个复选框值)。相比之下,如果它没有减慢页面速度,加载所有2000个复选框,比如100个单独的部分,然后使用自定义的JS分页程序来显示/隐藏页面,那么用户可以在分页时选中和取消选中,所有的值都会被记住。( HTML表单的一个经常被忽视的特性是,即使通过CSS隐藏,它们也会保留字段值,当您意识到这一点时,这会非常有帮助)。

我认为代码片段在这里不会太有用,因为这是一个相当开放的问题,但基本过程如下:

  1. 使用hook_form_alter()更改特定的复选框组字段。具体地说,您可以在运行数据库查询以检索结果并确定页数后,使用标记来添加分页器控件。
  2. 也是使用hook_form_alter()的一部分,您可以一次循环一页并生成全部100页(或任意数量)的复选框选项,在站点定制主题中checkbox JS或jQuery函数周围的<div>标记中将除第一页以外的所有页设置为display:none。或者将代码放到一个includes/文件夹中,然后通过hook_form_alter动态加载它(这并不优雅--我建议总是有一个自定义主题或子主题可用)。此函数将侦听按下的链接和当前页面,并隐藏/显示适当的CSS块。

如果您想获得更好的体验,您还可以创建一个支持JS的页码字段,您可以在其中键入页码并按Enter键,或者创建一个返回单个结果的搜索功能(现在您必须能够显示/隐藏所有单独的记录),以及针对单个页面的check all/uncheck all功能。玩得开心!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18780376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档