JqGrid web打印实现代码

yizhihongxing

下面是详细讲解“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日

相关文章

  • vue-cli设置css不生效的解决方法

    标准化配置文件中添加 CSS 相关的 webpack 配置 在使用 vue-cli 初始化一个项目时,它会默认生成一个标准化的配置文件:webpack.config.js 。如果需要更改 webpack 配置,可以通过在项目根目录下创建 vue.config.js 文件进行自定义配置。 我们可以在 vue.config.js 文件中配置相应的配置项,来解决 …

    css 2023年6月9日
    00
  • Vue中使用webpack别名的方法实例详解

    标题:Vue中使用webpack别名的方法实例详解 为了更好地管理项目中的模块,我们经常使用别名来代替长长的文件路径。在Vue中,我们可以使用webpack的别名来实现这个功能。下面我来详细讲解一下如何使用webpack别名。 1.配置webpack Vue 使用 webpack 打包,因此我们需要修改 webpack 的配置文件。 在 webpack.co…

    css 2023年6月9日
    00
  • 学习从实践开始之jQuery插件开发 对话框插件开发

    接下来我将为你详细讲解“学习从实践开始之jQuery插件开发 对话框插件开发”的完整攻略。 1. 前置知识 在学习jQuery插件开发之前,你需要掌握以下知识: HTML/CSS 基础知识 JavaScript 基础语法 jQuery 基础语法 2. 对话框插件开发步骤 2.1 需求分析 在开始开发对话框插件之前,需要明确插件的需求,例如插件需要实现哪些功能…

    css 2023年6月10日
    00
  • 详解vue过度效果与动画transition使用示例

    详解Vue过渡效果与动画Transition使用示例 在Vue中,为了使UI更加友好、动态,我们可以使用过度效果和动画来实现许多炫酷的效果。Vue提供了<transition>和<transition-group>两个组件,用于在DOM元素插入和删除时自动应用过渡效果和动画。 <transition>组件 <tran…

    css 2023年6月10日
    00
  • DIV border边框显示不完全问题的解决方法

    问题描述: 当给一个 DIV 添加 CSS border 边框时,发现边框不会显示完全,有时候只会显示一半或者一部分,这是为什么呢? 解决方法: 解决方法一:使用 box-sizing 属性 box-sizing 属性定义了元素的大小计算方式,使用该属性可以解决边框显示不完全的问题。 默认情况下,box-sizing 属性取值为 content-box,这意…

    css 2023年6月10日
    00
  • css中子元素设置margin-top为什么影响了父元素

    当在CSS中将子元素的margin-top属性设置为正数值时,可能会影响其父元素的高度。这是由于CSS中的盒模型(Box Model)所决定的。盒模型定义了一个元素在页面中的可视框,并包括元素的四个基本属性:内容(content)、填充(padding)、边框(border)和外边距(margin)。 当设置子元素的margin-top属性时,可以看做是给子…

    css 2023年6月10日
    00
  • CSS实现响应式布局的方法

    以下是“CSS实现响应式布局的方法”的完整攻略: CSS实现响应式布局的方法 在 CSS 中,可以使用多种方法实现响应式布局。以下是一些常见的实现方法。 方法一:使用媒体查询 使用媒体查询是一种常见的实现响应式布局的方法。以下是一个示例: /* 默认样式 */ .container { width: 960px; } /* 在窗口宽度小于等于 768px 时…

    css 2023年5月18日
    00
  • 使用CSS3制作版头动画效果

    使用CSS3制作版头动画效果可以为网站增添可观性和互动性,下面将详细介绍制作版头动画效果的完整攻略。 步骤一:设计版头动画效果 首先,设计版头动画效果。根据网站主题和需求,制定相应的版头设计,其中包括动画元素、动画效果、时间、速度等。设计完成后,记录相应的CSS属性值和关键帧。 步骤二:编写HTML代码 在HTML文件中添加需要动画的元素,并进行相应的样式设…

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