广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >如何使用jQuery设计数据表格之设计表格基类
  • 184
分享到

如何使用jQuery设计数据表格之设计表格基类

2024-04-02 19:04:59 184人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关如何使用Jquery设计数据表格之设计表格基类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。步骤1 设计生成表格的基类我们希望设计一个生成表格

这篇文章将为大家详细讲解有关如何使用Jquery设计数据表格之设计表格基类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

步骤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的话,则不容易向其构造函数传递参数。

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

public function __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)){  throw new Exception("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的简单表格。

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

public function setHeadings(array $headings){  $this->headings = array_merge($this->headings, $headings);  }

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

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

public function ignoreFields(array $fields){  foreach($fields as $f){  if($f!=$this->pk_col)  $this->hide_cols[] = $f;  }  }

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

public function hidePkCol($bool){  $this->hide_pk_col = (bool)$bool;  }

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

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

private function _selectFields(){  foreach($this->tbl_fields as $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);  }  }

这里是一个helper的帮助类方法,注意CI中的helper类,命名是private的,以下划线+方法名的方法命名。这个方法是在下文中的generate()中用到的,其中主要的功能是,循环查找$this->tbl_fields中的每个字段,是否属于隐藏显示的字段,如果不属于隐藏字段,则通过$this->CI->db->select($field);将相关字段取出。另外要注意的是

 array_unshift($headings,"");

这句代码中,实际的作用是,在数据表格的***列中,加一项代表“全选/反选”功能的checkbox,这个功能可以用在对数据进行选择或删除的时候。

接下来,是生成数据表格的generate()方法,代码如下:

public function generate(){  $this->_selectFields();  $rows = $this->CI->db  ->from($this->tbl_name)  ->get()  ->result_array();  foreach($rows as &$row){  $id = $row[$this->pk_col];  array_unshift($row, "");  if($this->hide_pk_col){  unset($row[$this->pk_col]);  }  }  return $this->CI->table->generate($rows);  }

在这个方法中,首先是调用了上文中的 $this->_selectFields();

方法,以决定显示数据库指定表中的哪些字段。然后使用CI中的获得数据表记录的方法获得数据集($rows)。然后在循环中,为每一条记录前都生成一个checkbox(array_unshift一句)。***,判断是否需要屏蔽显示主键,如果是的话,则屏蔽显示(unset一句)。

接下来,为数据表格增加表单提交按钮。为了通用起见,我们期望可以根据用户的要求,指定生成什么类型的按钮。比如,在这个例子中,期望生成一个删除的按钮,所以我们编写如下的一个生成按钮的方法:

public static function createButton($action_name, $label){  return "";  }

在这个静态方法中,$action_name为要生成的方法名,比如我们要生成的是Delete方法,则传入的$action_name参数为delete,而label则为按钮的标签名。

而如果得知这个按钮被用户点击并提交呢?则可以用如下方法判断

public static function getPostAction(){  if(isset($_POST['dg_action'])){  return key($_POST['dg_action']);  }  }

如果用户选择了数据表格中的多行并提交的话,可以使用如下方法去获得

public static function getPostItems(){  if(!empty($_POST['dg_item'])){  return $_POST['dg_item'];  }  return array();  }

返回的是一个表示了用户选择多少个记录的数组。本例子中涉及的是删除按钮的功能,所以编写一个方法,用于将用户选择的数据删除,代码如下:

public function deletePostSelection(){  if(!empty($_POST['dg_item']))  return $this->CI->db  ->from($this->tbl_name)  ->where_in($this->pk_col,$_POST['dg_item'])  ->delete();  }

比如用户在表格中选择了若干条记录,点delete按钮提交,则deletePostSelection方法会等价于执行如下的sql语句:

DELETE FROM my_table WHERE id IN (1,5,7,3,etc...)。

***,我们综合整理一下完整的数据表格生成类,如下代码:

class Datagrid{  private $hide_pk_col = true;  private $hide_cols = array();  private $tbl_name = '';  private $pk_col = '';  private $headings = array();  private $tbl_fields = array();  function __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)){  throw new Exception("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');  }  public function setHeadings(array $headings){  $this->headings = array_merge($this->headings, $headings);  }  public function hidePkCol($bool){  $this->hide_pk_col = (bool)$bool;  }  public function ignoreFields(array $fields){  foreach($fields as $f){  if($f!=$this->pk_col)  $this->hide_cols[] = $f;  }  }  private function _selectFields(){  foreach($this->tbl_fields as $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);  }  }  public function generate(){  $this->_selectFields();  $rows = $this->CI->db  ->from($this->tbl_name)  ->get()  ->result_array();  foreach($rows as &$row){  $id = $row[$this->pk_col];  array_unshift($row, "");  if($this->hide_pk_col){  unset($row[$this->pk_col]);  }  }  return $this->CI->table->generate($rows);  }  public static function createButton($action_name, $label){  return "";  }  public static function getPostAction(){  if(isset($_POST['dg_action'])){  return key($_POST['dg_action']);  }  }  public static function getPostItems(){  if(!empty($_POST['dg_item'])){  return $_POST['dg_item'];  }  return array();  }  public function deletePostSelection(){  if(!empty($_POST['dg_item']))  return $this->CI->db  ->from($this->tbl_name)  ->where_in($this->pk_col,$_POST['dg_item'])  ->delete();  }  }

我们把这个类保存为datagrid_helper.PHP,保存在application/helper目录下。

关于“如何使用jQuery设计数据表格之设计表格基类”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何使用jQuery设计数据表格之设计表格基类

本文链接: https://www.lsjlt.com/news/80261.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用jQuery设计数据表格之设计表格基类
    这篇文章将为大家详细讲解有关如何使用jQuery设计数据表格之设计表格基类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。步骤1 设计生成表格的基类我们希望设计一个生成表格...
    99+
    2022-10-19
  • Dreamweaver如何设计彩色边框的表格
    小编给大家分享一下Dreamweaver如何设计彩色边框的表格,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!启动Adobe Dreamweaver软件,单击欢迎界...
    99+
    2023-06-08
  • MySQL 如何设计统计数据表
    目录是否需要实时更新物化视图工具(Flexviews)计数表总结缓存型数据表通常在统计数据时会经常用到,因此也会叫统计性数据。举个例子来说,对于员工、部门数据表而言,我们可能会需要查询一个部门下有多少员工。这时候有三...
    99+
    2022-05-24
    MySQL 统计数据表 MySQL 设计数据表
  • Android使用表格布局设计注册界面
    Android中使用表格布局设计注册界面,供大家参考,具体内容如下 注册页面包含:用户名,密码,确认密码,验证码。验证码使用一个封装好的工具类生成的,可以直接使用。效果图如下所示。没...
    99+
    2022-11-12
  • 怎么在Dreamweaver中使用标签设计表格
    本篇文章给大家分享的是有关怎么在Dreamweaver中使用标签设计表格,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先打开Dreamweaver,进行新建html文件,在“...
    99+
    2023-06-08
  • 使用Navicat将表设计导出数据库设计文档
    我们在写数据库设计文档的时候,会需要对数据库表进行设计的编写,手动写的话会很费时间费精力。 1、首先在Navicat中点击查询,然后输入以下SQL语句: SELECTTABLE_NAME 表名,COLUMN_NAME 字段,COLU...
    99+
    2023-08-17
    数据库 sql mysql
  • 如何实现数据库中主从表的设计
    本篇内容主要讲解“如何实现数据库中主从表的设计”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现数据库中主从表的设计”吧!举一个例子,我现在有一些新闻信息,...
    99+
    2022-10-18
  • Linux下如何使用openpyxl处理表格数据
    小编给大家分享一下Linux下如何使用openpyxl处理表格数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需...
    99+
    2023-06-27
  • 如何使用css制作表格边框设置附代码
    今天就跟大家聊聊有关如何使用css制作表格边框设置附代码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。网页中常常有这样的表格布局边框,给大家分享一下...
    99+
    2022-10-19
  • 如何理解数据库设计的完整性约束表现
    这篇文章将为大家详细讲解有关如何理解数据库设计的完整性约束表现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。数据完整性是指数据的正确性、完备性和一致性,是衡...
    99+
    2022-10-19
  • 如何使用MySQL进行表的设计和规范化?
    如何使用MySQL进行表的设计和规范化?MySQL是一种常用的关系型数据库管理系统,被广泛应用于各种软件开发和数据存储需求中。在使用MySQL进行表的设计和规范化时,遵循一定的原则和规则可以提高数据库的性能和可维护性。本文将介绍如何使用My...
    99+
    2023-10-22
    - MySQL - 表设计 - 规范化
  • 如何设计一个优化的MySQL表结构来实现数据统计功能?
    如何设计一个优化的MySQL表结构来实现数据统计功能?在实际的软件开发中,数据统计是一个非常常见且重要的功能。而MySQL作为一种常用的关系型数据库管理系统,其表结构设计的优化对于数据统计功能的实现来说尤为重要。本文将介绍如何设计一个优化的...
    99+
    2023-10-31
    数据统计功能 MySQL表结构设计 优化MySQL表结构
  • 如何设计一个优化的MySQL表结构来实现数据报表功能?
    如何设计一个优化的MySQL表结构来实现数据报表功能?一、IntroductionMySQL是广泛使用的关系型数据库系统,用于存储和管理大量的数据。在开发应用程序时,通常会遇到需要生成数据报表的需求。为了实现高效和优化的数据报表功能,正确设...
    99+
    2023-10-31
    MySQL 表结构 数据报表
  • 聊聊如何使用Node.js来读取表格的数据
    随着Web应用开发越来越重要,Node.js成为了开发者们最常用的工具之一。它可以帮助我们快速地开发服务器端应用程序、命令行工具和桌面应用程序。但是,有时候我们需要读取Excel表格或CSV文件中的数据并用于我们的应用程序中。在本文中,我们...
    99+
    2023-05-14
  • 带上数据表,分析一下拼团活动该如何设计
    拼团活动该如何设计   后台创建拼团活动 一个成熟的拼团活动包含的四个要素: 1 拼团成团商品 必须要带上或者关联商品,设置拼团时商品的价格,与原价格肯定要低,这样才能吸引更多的人拼团。   2 拼团人数 既然是拼着购买,这里设...
    99+
    2022-01-10
    带上数据表,分析一下拼团活动该如何设计
  • 如何设计MySQL数据库表结构以支持会计系统的核心功能?
    如何设计MySQL数据库表结构以支持会计系统的核心功能?在设计会计系统的数据库表结构时,需要考虑核心功能的支持以及数据的完整性和可扩展性。本文将介绍如何设计MySQL数据库表结构来支持会计系统的核心功能,并且提供了具体的代码示例。设计会计科...
    99+
    2023-10-31
    mysql数据库 数据库表结构设计 会计系统功能
  • 如何分析Oracle数据库表空间设计中ASM/BFT/OMF的综合使用
    这篇文章给大家介绍如何分析Oracle数据库表空间设计中ASM/BFT/OMF的综合使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为满足海量数据的高性能、易管理性等综合需求,很多项...
    99+
    2022-10-19
  • 报表设计器中使用spring框架实现自定义数据集
    本篇文章给大家分享的是有关报表设计器中使用spring框架实现自定义数据集,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。spring是一个开源框架,是为了解决企业应用程序开发复...
    99+
    2023-06-03
  • 如何在MySQL中设计仓库管理系统的表结构来管理库存价格信息?
    如何在MySQL中设计仓库管理系统的表结构来管理库存价格信息?在仓库管理系统中,库存价格的管理对于企业的运营十分重要。为了有效管理库存价格信息,在设计MySQL数据库的表结构时,需要考虑以下几个方面:仓库管理、商品管理、库存管理以及价格管理...
    99+
    2023-10-31
    MySQL 表结构 仓库管理系统
  • 如何使用MySQL和JavaScript创建一个动态数据表格
    要创建一个动态数据表格,可以通过以下步骤使用MySQL和JavaScript:1. 首先,创建一个MySQL数据库并创建一个数据表。...
    99+
    2023-10-20
    MySQL
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作