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日

相关文章

  • CSS3自定义滚动条样式的示例代码

    实现自定义滚动条样式,我们可以利用CSS3的伪元素选择器::-webkit-scrollbar和::-webkit-scrollbar-thumb来设置自定义样式。 以下是具体实现步骤: 首先,我们需要针对Webkit浏览器(如Chrome、Safari等)设置样式,因为其他浏览器对这些属性的支持不一致。 /* 针对Webkit浏览器设置样式 */ ::-w…

    css 2023年6月11日
    00
  • js实现鼠标点击左上角滑动菜单效果代码

    下面我来详细讲解一下如何实现鼠标点击左上角滑动菜单效果的代码攻略。 1.准备工作 在实现滑动菜单效果之前,我们需要准备以下工作: HTML 模板:我们需要一个 HTML 模板,包含一个菜单按钮和一个菜单内容的容器。 CSS 样式:我们需要用 CSS 样式来实现菜单内容的定位和显示效果。 JavaScript 代码:我们需要使用 JavaScript 代码来实…

    css 2023年6月10日
    00
  • Vue.js中对css的操作(修改)具体方式详解

    当我们在Vue.js中编写组件时,常常需要对组件的样式进行修改。Vue.js中对css的操作可以通过以下方式进行: 声明式渲染样式 可以通过在组件模板中直接使用style属性来声明式渲染样式,如下例: <template> <div style="background-color: red; color: white;"…

    css 2023年6月10日
    00
  • 吃透移动端 1px的具体用法

    吃透移动端 1px 的具体用法 在移动端开发中,经常会遇到 1px 的边框显示问题,因为移动端的屏幕分辨率很高,CSS 的像素一般是对应于物理像素的两倍甚至三倍。这就导致边框在高像素密度设备上可能会变得很细,有时候会留出空隙或虚化。 为了解决这个问题,可以使用下面介绍的几种方法。 方法一:使用 viewport 与 rem 我们可以通过 viewport 和…

    css 2023年6月9日
    00
  • css中margin:0 auto居中问题深入探讨

    对于“css中margin:0 auto居中问题深入探讨”的完整攻略,以下是我的详细讲解: 什么是margin: 0 auto? margin:0 auto; 是CSS中实现水平居中的一种方式。这个属性值可以让元素的左右margin取值相等,并将元素水平居中。 首先,0表示上下margin为0,其次,auto表示左右margin会尽可能地均分元素的剩余宽度,…

    css 2023年6月10日
    00
  • XHEditor编辑器使用文档

    XHEditor编辑器使用文档 简介 XHEditor是一款轻量级HTML5代码编辑器,支持常见的代码高亮、语法提示、自动完成、代码折叠、文件浏览等功能。 安装 在网站中引入CSS和JS文件即可使用,示例如下: <link rel="stylesheet" href="xheditor.min.css"> …

    css 2023年6月10日
    00
  • CSS 设置滚动条样式的实例代码

    下面是详细讲解“CSS 设置滚动条样式的实例代码”的完整攻略: 1. CSS 设置滚动条样式的原理 在 CSS 中,我们可以通过 ::-webkit-scrollbar 伪元素选择器以及一些属性来调整滚动条的样式。 2. 滚动条样式基础 第一步,我们可以使用 ::-webkit-scrollbar 选择器来选中滚动条。比如说,我们可以改变滚动条的宽高、颜色等…

    css 2023年6月13日
    00
  • jQuery过滤选择器经典应用

    接下来我将详细讲解“jQuery过滤选择器经典应用”的完整攻略。 一、什么是jQuery过滤选择器 jQuery过滤选择器是指根据一定的条件对HTML元素进行过滤筛选,最终获得需要的元素。过滤选择器一般用于从匹配元素集合中筛选出符合特定条件的元素,可以帮助我们更快地定位需要的元素,提高代码效率。 常用的jQuery过滤选择器有以下几种: 过滤选择器 说明 :…

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