【IT168专稿】当前在Web开发中,jQuery和PHP无疑是绝佳的配合。其中PHP由于其简单易用,深得开发者的喜爱,而jQuery则由于在前端开发中的灵活和简单,功能强大,可以做出很多很眩目的效果。在本文中,将选取PHP中的著名的开发框架Codeigniter(下简称CI)配合jQuery去设计一个日常常见的datagrid数据表格。其中充分利用了jQuery及CI框架的特性,打造一个无刷新的数据表格。本文的阅读对象为已经具备一定jQuery基础知识及CI框架基础知识的用户。

步骤1 设计生成表格的基类

我们希望设计一个生成表格的基类,它可以针对任意数据库中的任意表,都能自动生成对应的数据表格,比如我们只需要传入数据库中的表名或者表的索引字段即可生成表格。本文中的大部分时间都会围绕这个基类展开代码编写,下面是代码的片断定义:

class Datagrid{private$hide_pk_col=true;private$hide_cols=array();private$tbl_name='';private$pk_col='';private$headings=array();private$tbl_fields=array();

}

?>

这里先行定义了一些属性变量,比如是否隐藏主键的列,表的名称$tbl_name,表头列$headings,表的字段数组$tbl_fields。这里,我们把这个基类定义为CI中的helper帮助类,因为定义为CI中的library的话,则不容易向其构造函数传递参数。

接下来,编写其构造函数为代码如:

publicfunction__construct($tbl_name, $pk_col='id'){$this->CI=&get_instance();

$this->CI->load->database();

$this->tbl_fields=$this->CI->db->list_fields($tbl_name);if(!in_array($pk_col,$this->tbl_fields)){

thrownewException("Primary key column '$pk_col' not found in table '$tbl_name'");

}

$this->tbl_name=$tbl_name;

$this->pk_col=$pk_col;

$this->CI->load->library('table');}

在上面的代码的构造函数中,接收了两个参数,分别是数据库表的名称和主键(默认这里为$id)。然后初始化实例化了CI对象,然后调用其加载数据库及加载表的帮助方法,得出的$this->tbl_fields则是其数据库的字段了。然后判断主键$pk_col是否在数据表中,如果不存在的话抛出异常,如果存在的话,使用成员变量tbl_name和pk_col分别保存数据的表名和主键,这样下次就不用再访问数据库了。最后,使用$this->CI->load->library('table')的帮助表格类,将数据库的字段生成一个HTML的简单表格。

而为了自定义列的标题,也有一个方法如下:

publicfunctionsetHeadings(array$headings){

$this->headings=array_merge($this->headings, $headings);

}

比如,我们可以将原来表格的列重新自定义要显示的名称,比如把regdate字段改为“Registration Date”。而具体的代码在下文中还会讲解。

在数据的呈现过程中,有的时候不是所有的列都需要显示,要根据实际情况进行隐藏或显示,这个时候可以编写相关的方法实现,代码如下:

publicfunctionignoreFields(array$fields){

foreach($fieldsas$f){if($f!=$this->pk_col)

$this->hide_cols[]=$f;

}

}

其中,$fields是需要被隐藏的列的名称数组。代码中还对主键进行了判断,因为主键是必须从数据库中获取的。而假如不希望主键显示在用户界面上的话,可以通过以下方法设置:

publicfunctionhidePkCol($bool){

$this->hide_pk_col=(bool)$bool;

}

这里传入的$bool是一个布尔值,代表是否需要在界面中显示主键。

接下来,再看一个方法,代码如下:

privatefunction_selectFields(){

foreach($this->tbl_fieldsas$field){if(!in_array($field,$this->hide_cols)){

$this->CI->db->select($field);//判断是否隐藏了主键if($field==$this->pk_col&&$this->hide_pk_col) continue;

$headings[]=isset($this->headings[$field]) ? $this->headings[$field] : ucfirst($field);

}

}if(!empty($headings)){

array_unshift($headings,"");

$this->CI->table->set_heading($headings);

}

}

jquery mysql表格_使用jQuery设计数据表格:设计表格基类相关推荐

  1. mysql做十亿条数据查询_数据库优化:mysql数据库单机数十亿数据查询设计

    很久没写文章,是不是想着写点什么东西,分享下我的数据库设计思路,主要是针对单机数十亿及以上数据查询优化技巧. 如果只是简单的查询,没有频繁的写入操作,对查询速度不要求在毫秒级别,就不需要什么大型的数据 ...

  2. jquery 堆栈溢出_带有jQuery和CSS3的漂亮照片堆栈库

    jquery 堆栈溢出 View demo 查看演示Download Source 下载源 In this tutorial we are going to create a nice and fre ...

  3. 使用Navicat 导出 MySQL 数据库表结构、表数据到Excel表格中

    文章目录 1 摘要 2 数据导出 2.1 导出数据库表结构至Excel 2.2 导出数据库表结构为 SQL 2.3 导出数据库表数据至Excel 3 推荐参考资料 1 摘要 在编写项目设计文档的时候, ...

  4. jquery级试题_常见jquery面试题

    jQuery 面试问题和答案 JavaScript 是客户端脚本的标准语言,而 jQuery 使得编写 JavaScript 更加简单.你可以只用写几行的jQuery 代码就能实现更多的东西. 它是最 ...

  5. jquery 后代元素_在jQuery中查找元素的所有后代

    jquery 后代元素 In this post, we are going to discuss about an important jQuery traversing method to fin ...

  6. jquery ui 主题_使用jQuery UI主题

    主题不是一个新概念. 您可能已经使用级联样式表(CSS)样式和类推出了一些样式,以格式化网站的外观. 使用框架可以使方法标准化,并减少需要编写的工作量和代码量. jQuery UI现在是主题实现的行业 ...

  7. excel表格如何转换成word表格_将excel/word数据复制粘贴到word表格的几种方式

    将excel/word数据复制粘贴到word表格的几种方式 有时候我们需要把excel中的数据粘贴到word中的一个表格中,或者在word中一个表格的内容粘贴到另一个表格中.这两种情况,都遵循同样的操 ...

  8. 自适应高度表格_【干货分享】Word制作表格,这几个技巧必须要学会!

    快点这里订阅最有趣有料的3D/VR/AR/Ai数字化资讯 如果你对Word不是很熟练,那制作表格起来可能特别费劲.这里,就给大家分享几个,必须要掌握的制表技巧. 01表格前面加空行 制作好表格以后,如 ...

  9. 通用Excel表格导出(Map类型数据导出为表格)

    背景 为提升代码开发效率,项目使用了通用查询(动态数据表.动态条件.动态列名等),各表查询通过同一个页面展现,前端通过获取路径上的表名调用同一个后端控制器--动态获取到查询条件.数据列名.不同表数据等 ...

最新文章

  1. linux多用户怎么表示,Linux如何建立多用户
  2. Swift - 闭包的介绍及用法(以数组排序为例)
  3. Python 程序扩展名(py, pyc, pyw, pyo, pyd) 及发布程序时的选择
  4. 常用android的smali注入代码,android smali代码注入 实战一
  5. Hadoop namenode启动瓶颈分析
  6. 【SpringBoot 2】(十一)单元测试JUnit 5 指标监控
  7. Python机器学习:决策树002信息熵
  8. Java 读取txt文件,读取结果保存到数据库
  9. Linux专题_行编辑
  10. Elasticsearc 6.x以后不再支持mapping下多个type
  11. NOWCODER暑期多校第四场F:Beautiful Garden(签到题)题解
  12. 【虚拟机】VirtualBox 安装 Windows 11 虚拟机简介
  13. Chrome OS超便捷安装指南
  14. Ubuntu虚拟机下载app网速太慢
  15. python flask web框架_Python_WEB框架之Flask
  16. 点击复选框添加或删除value值到input输入框中
  17. 如何把img格式转换成vmdk格式
  18. 1分钟了解 rap2
  19. SpringBoot的幕后推手,java互联网架构师系统vip课程
  20. 超详细文件包含漏洞原理及修复

热门文章

  1. 英语影视台词---无敌破坏王2大脑互联网(3)((Ralph)我们去喝根汁汽水吧)...
  2. npm、webpack、vue-cli
  3. 【区块链之菜鸟入门】区块链发展史:从拜占庭将军问题到智慧契约
  4. webpack2 项目
  5. 【经验】在CSS中定义超链接样式a:link、a:visited、a:hover、a:active的顺序
  6. Android之复选框对话框
  7. html语言的字体设置
  8. Java方法及构造方法
  9. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP
  10. Machine Learning、Date Mining、IRNLP 会议期刊论文推荐