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日

相关文章

  • python实现测试工具(二)——简单的ui测试工具

    当我们需要测试一个应用程序的 UI 时,我们需要手工点击每个 UI 元素,并提供相应的输入,观察应用程序的反应并验证应用程序是否正确。 然而,人工测试非常耗费精力和时间,因此我们需要自动化 UI 测试,以便减轻测试工程师的负担。在这篇文章中,我们将学习如何使用 Python 实现一个基本的 UI 测试工具。 前置条件 在开始这个教程之前,我们需要确保以下软件…

    css 2023年6月10日
    00
  • Html5+jQuery+CSS制作相册小记录

    让我来详细讲解一下“HTML5+jQuery+CSS制作相册小记录”的完整攻略。 准备工作 安装文本编辑器:选择一个适合自己的文本编辑器,并学习如何使用它。建议使用Visual Studio Code。 学习HTML、CSS、JavaScript和jQuery:掌握HTML、CSS、JavaScript和jQuery的基础知识及其运用方式。 HTML布局 创…

    css 2023年6月9日
    00
  • 详解css图像拼合技术(精灵图)

    下面是“详解CSS图像拼合技术(精灵图)”的完整攻略。 什么是CSS图像拼合技术 CSS图像拼合技术,也叫精灵图技术,是指将多个小图像合成一张大的背景图片,减少页面加载次数,提升页面加载速度和性能的一种技术。通过CSS的背景定位和尺寸调整来显示需要的图像。 精灵图的原理 精灵图的原理就是将多个小图像合成一张大的背景图片,通过CSS的背景定位和尺寸调整来显示需…

    css 2023年6月10日
    00
  • 防止网页被搜索引擎爬虫和网页采集器收录的方法汇总

    我来为你讲解一下。 防止网页被搜索引擎爬虫和网页采集器收录的方法汇总 防止网页被搜索引擎爬虫和网页采集器收录是网站安全的一项重要工作。以下是一些方法: 1. robots.txt 协议 robots.txt 就是所谓的协议或标准,它的作用是告诉搜索引擎的爬虫哪些页面可以访问,哪些不可以访问。网站的根目录(比如 https://www.example.com)…

    css 2023年6月10日
    00
  • 浏览器全屏显示背景图片的css样式与html结构

    要实现浏览器全屏显示背景图片,需要使用CSS的background-size属性和HTML的一些结构布局。 以下是具体的步骤: 首先,创建一个div元素,作为要设置背景图片的容器。可以使用如下代码: <div class="container"></div> 接着,在CSS样式表中设置该容器的宽度、高度、背景图片、…

    css 2023年6月9日
    00
  • css3 border-radius属性详解

    下面我将详细讲解“CSS3 border-radius属性详解”的完整攻略。 CSS3 border-radius属性详解 什么是border-radius属性 border-radius属性是CSS3中的一个新属性,用于设置圆角边框。通过设置border-radius,我们可以将矩形边框变得更加圆滑。border-radius的使用极大增加了网页设计的灵活…

    css 2023年6月10日
    00
  • CSS3之transition实现下划线的示例代码

    下面是“CSS3之transition实现下划线的示例代码”的详细攻略: 一、什么是transition transition是CSS3中的一个属性,可以用来设置CSS的过渡效果。它可以在元素的属性发生变化时,平滑地过渡到新的状态。常见的应用包括鼠标悬停时,改变文字和背景色等。 二、transition实现下划线代码 下面是一个使用transition实现下…

    css 2023年6月13日
    00
  • vue实现动态列表尾部添加数据执行动画

    让我来详细讲解一下“vue实现动态列表尾部添加数据执行动画”的完整攻略。 1. 实现思路 动态列表尾部添加数据执行动画的实现思路大致如下: 首先,需要在data中定义一个数组,用于存储列表数据。接下来,在页面上使用v-for指令,循环渲染数组中的数据,展示列表内容。 接着,我们可以使用vue的过渡动画功能,对新添加的数据进行动画处理。当有新数据添加时,可以通…

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