MVC打印表格,把表格内容放到部分视图打印

假设在一个页面上有众多内容,而我们只想把该页面上的表格内容打印出来,window.print()方法会把整个页面的内容打印出来,如何做到只打印表格内容呢?

既然window.print()只会打印整页的内容,何不把表格放在一个部分视图中,在部分视图中再调用window.print()方法。

Model很简单:

public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public decimal Score { get; set; }
    }

Home控制器中有一个Action方法返回Student的集合到部分视图:

public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult PrintStudent()
        {
            var result = new List<Student>
            {
                new Student(){Id = 1, Name = "darren", Score = 90.9M},
                new Student(){Id = 2, Name = "smith", Score = 91.8M},
                new Student(){Id = 3, Name = "kathy", Score = 98.6M}
            };
            return PartialView(result);
        }
    }

在Home/PrintStudent.cshtml这个强类型视图中调用window.print()方法:

@model IEnumerable<MvcApplication1.Models.Student>

<style type="text/css">
    .c {
        width: 100%;
        border: 1px solid green;
        border-collapse: collapse;
    }

    .c td {
        padding: 2px;
        border: 1px solid green;
    }
</style>

<style>
    /* 打印的时候让打印按钮隐藏 */
    @@media only print {
        a {
            display: none;
        }
    }
</style>

<a href="#" onclick="window.print();return false;">打印表格</a>
<table class="c">
    <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>分数</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var student in Model)
        {
            <tr>
                <td>@student.Id</td>
                <td>@student.Name</td>
                <td>@student.Score</td>
            </tr>
        }
    </tbody>
</table>
<a href="#" onclick="window.print();return false;">打印表格</a>

在Home/Index.cshtml视图中,点击按钮,弹出部分视图内容:

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<button id="p">打印已经确定好的内容</button>

@section scripts
{
    <script type="text/javascript">
        $(function() {
            $(‘#p‘).click(function() {
                $.ajax({
                    url: ‘@Url.Action("PrintStudent","Home")‘,
                    success: function(data) {
                        if (judgePopupBlocked) {
                            alert("浏览器禁用弹出窗口了,请允许弹出窗口");
                        }
                        var popUpWindow = window.open();
                        if (popUpWindow) {
                            $(popUpWindow.document.body).html(data);
                        } else {
                            alert("浏览器禁用弹出窗口了,请允许弹出窗口");
                        }
                    }
                });
            });
        });

        //判断浏览器是否阻止了弹出窗口
        function judgePopupBlocked() {
            var w = window.open(null, "", "width=1,height=1");
            try {
                w.close();
                return false;
            } catch (e) {
                return true;
            }
        }
    </script>
}

点击"打印已经确定好的内容"按钮:

取消禁用弹出窗口,再次点击"打印已经确定好的内容"按钮:

点击"打印表格":

MVC打印表格,把表格内容放到部分视图打印

时间: 2024-12-13 02:34:00

MVC打印表格,把表格内容放到部分视图打印的相关文章

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

Web打印连续的表格,自动根据行高分页

拿到这个需求,我已经蛋碎了一地,经过N天的攻克,终于是把它搞定了,只是不知道会不会在某种情况下出现BUG.表示我心虚没有敢做太多的测试.... ----------------------------------------------------------废话分割线----------------------------------------------------------- 注:我们的系统是基于ligerui这个一堆bug的插件的. 详细需求: 1.任意一个表格,行高不均匀且不相等:

根据excel表格中的内容更新Sql数据库

关于[无法创建链接服务器 "(null)" 的 OLE DB 访问接口 SQL Server 2008读取EXCEL数据时,可能会报这个错误:无法创建链接服务器 "(null)" 的 OLE DB 访问接口 "MSDASC" 的实例. 1. 此错误主要是在使用代码读取数据时发生: insert into 数据库表名 select * from OpenDataSource ('Microsoft.Ace.OLEDB.12.0','Data Sou

使用Windows驱动的虚拟打印机,打印Excel表格无表格线问题解决(2)

测试: 经前天的测试,最终还是没有明显的定夺到底是驱动的问题,还是打印机的问题.但是按照可能性来排查,最明显的一点就是其他测试环境不变的情况下增加一张图片,就可以打印出表格线,我始终觉得这里是突破点,但是一时又没了思路. 于是想看一下word中存在表格的时候会不会有同样的问题,遗憾的是没有,为此我暂定为是Office的Bug,上google搜索关键字,office excel can not print gridlines,幸运的似乎看到了相同的问题:http://209.116.186.218

(35)DOM应用之表格中的内容排序

基本思路:appendChild方法实质上是将原来存在的元素remove掉,然后在添加到后面去. <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title></title> <script> window.onload=function () { var oTab=document.getElementById('tab1'); var o

Java 操作Word书签(二):添加文本、图片、表格到书签内容

在Java操作Word书签(一)中介绍了给Word中的特定段落或文字添加书签.读取及删除已有书签的方法,本文将继续介绍Java 操作Word书签的方法,即如何给已有的书签添加内容,包括添加文本.图片.表格等. 使用工具:Free Spire.Doc for Java (免费版) Jar文件获取及导入: 方法1: 通过官网下载jar文件包.下载后,解压文件.并将lib文件夹下的Spire.Doc.jar文件导入到java程序.参考如下导入效果: 方法2:可通过maven仓库安装导入.可参考安装导入

在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)

原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script   type= "text/javascript "   language= "javascript "> function   printPage()   {   var   newWin   =   window.open( 'about:blank ', ' ', ' ');   v

Orchard 基于 ASP.NET MVC 技术的免费开源内容管理系统

Orchard 是由微软公司创建,基于 ASP.NET MVC 技术的免费开源内容管理系统: 可用于建设博客.新闻门户.企业门户.行业网站门户等各种网站 简单易用的后台界面 性能稳定,功能齐全 热拔插模块化架构提供超强可扩展性 BSD 协议授权,可用于商业闭源项目 下载地址:https://orchard.codeplex.com/releases/view/119931 相关博客:http://www.orchardch.com/Blog 一个基于Orchard的开源CRM --coevery

ASP.NET MVC 5 - 将数据从控制器传递给视图

原文:ASP.NET MVC 5 - 将数据从控制器传递给视图 在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图.控制器类将响应请求来的URL.控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器.视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器. 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML.最佳做法是:一个视图模板应该永远不会执行业务逻辑或