JqGrid web打印实现代码

下面是详细讲解“JqGrid web打印实现代码”的完整攻略:

JqGrid web打印实现代码详解

JqGrid web打印简介

JqGrid是一款基于jQuery的网页表格插件,它提供了丰富的功能和选项,可以非常轻松地创建和展示各种类型的表格。而JqGrid web打印实现代码则是在JqGrid的基础上,添加了网页打印的功能,方便用户在页面上进行数据打印。

JqGrid web打印实现步骤

Step 1:引入JqGrid和其他类库

首先,在页面中引入JqGrid及其相关的类库,比如jQuery、jQuery UI等。具体引入方式如下:

<!-- 引入jQuery -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

<!-- 引入jQuery UI -->
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.0/themes/smoothness/jquery-ui.css">

<!-- 引入JqGrid -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.5/jquery.jqgrid.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.5/css/ui.jqgrid.min.css">

Step 2:创建JqGrid表格

在页面上创建一个JqGrid表格,并配置表头和数据等内容。具体配置方式参见JqGrid官方文档。

<table id="myGrid"></table>
<div id="pager"></div>

<script>
  jQuery("#myGrid").jqGrid({
    url:'data.json',
    datatype: "json",
    colNames:['Name', 'Age', 'Sex'],
    colModel:[
      {name:'name',index:'name', width:200, align:"left"},
      {name:'age',index:'age', width:200, align:"left"},
      {name:'sex',index:'sex', width:200, align:"left"}
    ],
    rowNum:10,
    rowList:[10,20,30],
    pager: '#pager',
    sortname: 'name',
    viewrecords: true,
    sortorder: "desc",
    caption:"JqGrid Example"
  });
  jQuery("#myGrid").jqGrid('navGrid','#pager',{edit:false,add:false,del:false});
</script>

Step 3:加载web打印插件

在页面中引入web打印插件的代码,以及相关样式文件。这里我们使用的是jQuery Print Area插件,具体引入方式如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-print-area/2.4.1/jquery.printarea.min.js"></script>

Step 4:添加打印按钮

在页面上添加一个打印按钮,以便用户点击按钮时进行打印。例如:

<button id="printButton">Print</button>

Step 5:编写web打印实现代码

最后,编写web打印的实现代码。这里我们监听打印按钮的点击事件,在点击时获取JqGrid表格的内容,并调用jQuery Print Area插件进行打印。具体代码如下:

$("#printButton").click(function() {
  var gridHtml = $("#myGrid").get(0).outerHTML;
  $("#printArea").html(gridHtml);
  $.print("#printArea");
});

其中,#myGrid是JqGrid表格的ID,#printArea是一个隐藏的div元素,用于存储要打印的内容。

示例说明

以下是两个JqGrid web打印的实例说明:

示例一:JqGrid表格打印

假设我们有一个学生信息表格,包含学生姓名、年龄、性别等字段。我们可以使用JqGrid创建一个动态的表格,然后添加一个打印按钮。当用户点击打印按钮时,我们将该表格的HTML代码复制到一个隐藏的div元素中,并调用jQuery Print Area插件进行打印。具体代码如下:

<body>
  <table id="students"></table>
  <div id="printArea"></div>
  <button id="printButton">Print</button>

  <script>
    $("#students").jqGrid({
      url:'students.json',
      datatype: 'json',
      colNames: ['Name', 'Age', 'Sex'],
      colModel: [
        {name:'name', width:200, align:"left"},
        {name:'age', width:80, align:"right"},
        {name:'sex', width:100, align:"center"}
      ],
      rowNum: 10,
      rowList:[10,20,30],
      pager: '#pager',
      sortname: 'name',
      viewrecords: true,
      sortorder: "desc",
      caption: "Student Info"
    });

    $("#printButton").click(function() {
      var gridHtml = $("#students").get(0).outerHTML;
      $("#printArea").html(gridHtml);
      $.print("#printArea");
    });
  </script>
</body>

示例二:JqGrid表格分页打印

在第一个示例中,我们使用了JqGrid的默认分页功能。然而,如果表格数据量很大,可能需要手动进行分页打印。JqGrid提供了一些API函数,可以用于手动控制表格的显示和分页。具体实现方式如下:

<body>
  <table id="students"></table>
  <div id="printArea"></div>
  <button id="printButton">Print</button>

  <script>
    var tableData = null;
    var totalPages = 0;
    var currentPage = 1;
    var rowsPerPage = 10;

    $("#students").jqGrid({
      url:'students.json',
      datatype: 'json',
      colNames: ['Name', 'Age', 'Sex'],
      colModel: [
        {name:'name', width:200, align:"left"},
        {name:'age', width:80, align:"right"},
        {name:'sex', width:100, align:"center"}
      ],
      rowNum: rowsPerPage,
      rowList:[10,20,30],
      pager: '#pager',
      sortname: 'name',
      viewrecords: true,
      sortorder: "desc",
      caption: "Student Info",
      loadComplete: function(data) {
        tableData = data;
        totalPages = Math.ceil(tableData.records/rowsPerPage);
      },
    });

    $("#printButton").click(function() {
      $("#printArea").empty();
      currentPage = 1;

      var gridHtml = getTableHtml();
      $("#printArea").append(gridHtml);

      for (var i = 2; i <= totalPages; i++) {
        $("#students").jqGrid('setGridParam',{page:i}).trigger('reloadGrid');
        var gridHtml = getTableHtml();
        $("#printArea").append(gridHtml);
        currentPage++;
      }

      $.print("#printArea");
    });

    function getTableHtml() {
      var gridHtml = $("#students").get(0).outerHTML;
      var lastRow = currentPage * rowsPerPage;
      var firstRow = lastRow - rowsPerPage + 1;
      gridHtml = gridHtml.replace('ui-jqgrid-btable', 'ui-jqgrid-btable print-able');
      gridHtml = gridHtml.replace('ui-jqgrid-hbox', 'ui-jqgrid-hbox print-able');
      gridHtml += '<script>$(function(){$(".print-able").printThis({});});<\/script>';
      return gridHtml;
    }
  </script>
</body>

在这个示例中,我们首先定义了一些变量用于保存表格数据和分页信息。然后,在表格初始化的时候,我们设定每页显示10行数据,并且在loadComplete事件中获取表格数据,计算总页数。

在打印按钮的点击事件中,我们首先清空#printArea的内容,并将当前页面设置为第一页。然后,依次加载每一页的数据,将其拼接到#printArea的内容中。在加载每一页数据的时候,我们使用setGridParam函数手动设置该页的页号,并通过trigger('reloadGrid')函数重新加载数据。最后,调用jQuery Print Area插件进行打印。

为了使每一页的样式正确,我们在getTableHtml函数中替换了表格的类名,并添加了一个打印脚本。这个脚本用于在打印前隐藏一些不必要的元素,例如分页控件等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JqGrid web打印实现代码 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 基于jquery的表头固定的若干方法

    基于jQuery的表头固定有很多种方法,下面我来详细讲解一下。 1. 使用position和scrollTop 这种方法利用了position属性的fixed值,scrollTop获取顶部距离,使表头一直固定在顶部。 首先,我们需要在CSS中设置表头的position属性为fixed,并设置它的top为0: thead { position: fixed; …

    css 2023年6月11日
    00
  • HTML iframe标签用法案例详解

    下面我将为你详细讲解“HTML iframe标签用法案例详解”的完整攻略。 1. 什么是iframe标签? iframe 是 HTML 中的内联框架,可以将其他网页嵌入到当前页面中。它可以在一个文档中包含另一个页面的内容,起到将多个页面组合成一个完整页面的作用。 2. iframe标签的基本语法 下面是 iframe 标签的基本语法: <iframe …

    css 2023年6月9日
    00
  • CSS中理解层叠性及权重如何分配

    CSS中的层叠性和权重是很重要的概念,它们影响着样式的表现和优先级,下面为你详细讲解。 什么是层叠性 层叠性指的是当多个CSS样式作用在同一个HTML元素上时,它们之间的优先级及表现方式。当同一元素上出现了多个CSS规则,浏览器会根据规则来确定其最终表现形式。 如何理解层叠性 我们可以理解为,一个元素的样式可以由多条规则共同定义,不同规则可能会对同一个样式属…

    css 2023年6月9日
    00
  • CSS3实现超酷的黑猫警长首页

    针对“CSS3实现超酷的黑猫警长首页”的完整攻略,我将分为以下几个部分进行讲解: 项目需求 实现步骤 示例说明 1. 项目需求 我们要实现的是一款黑猫警长的主页,其中要有以下几个要求: 页面背景为半透明的黑色,与黑猫警长的形象相符合 页面顶部要有黑猫警长的logo,同时要有一个悬浮的导航菜单 页面中部的内容要用卡片的形式呈现,每个卡片中包含黑猫警长的一些信息…

    css 2023年6月10日
    00
  • element带选择表格将表头的复选框改成文字的实现代码

    首先,我们需要明确一个概念:element-ui是一个基于Vue.js框架的组件库,提供了一系列UI组件和工具,包括表格(Table)组件和复选框(Checkbox)组件。 要实现将表头的复选框改成文字,可以通过自定义表头的插槽(slot)来实现。具体的步骤如下: 在template标签中定义表格(Table)组件,并设置表头(Headers)和数据(Dat…

    css 2023年6月10日
    00
  • 四种CSS常用的选择器使用方法和注意事项

    当我们编写样式表时,我们需要选中一些HTML元素,并定义它们的样式。选择器是可以选择特定元素的CSS规则。在CSS中,有四种常用的选择器,分别是:1. ID选择器2. 类选择器3. 元素选择器4. 后代选择器 下面将详细讲解这四种选择器的使用方法和注意事项: 1. ID选择器 ID选择器可以用来为单个元素设置样式。我们可以通过HTML标签中的“id”属性来定…

    css 2023年6月9日
    00
  • 使用HTML编写简单的邮件模版

    下面是“使用HTML编写简单的邮件模版”的完整攻略: 1. 定义邮件模版 在HTML中,可以使用标签与样式定义邮件模版。以下是一个基本的邮件模版示例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>邮件标题…

    css 2023年6月9日
    00
  • css3个性化字体_动力节点Java学院整理

    CSS3个性化字体攻略 1. 引入字体文件 首先,需要引入自定义字体文件,常见的字体文件格式有.woff、.eot、.ttf、.otf等。可以使用@font-face规则将自定义字体文件引入到网页中: @font-face { font-family: myFont; /*自定义字体名称*/ src: url(‘myFont.woff’) format(‘w…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部