ASP.NET?MVC打印表格并實現(xiàn)部分視圖表格打印
假設(shè)在一個頁面上有眾多內(nèi)容,而我們只想把該頁面上的表格內(nèi)容打印出來,window.print()方法會把整個頁面的內(nèi)容打印出來,如何做到只打印表格內(nèi)容呢?
既然window.print()只會打印整頁的內(nèi)容,何不把表格放在一個部分視圖中,在部分視圖中再調(diào)用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這個強類型視圖中調(diào)用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="#" rel="external nofollow" rel="external nofollow" onclick="window.print();return false;">打印表格</a>
<table class="c">
<thead>
<tr>
<th>編號</th>
<th>姓名</th>
<th>分數(shù)</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="#" rel="external nofollow" rel="external nofollow" onclick="window.print();return false;">打印表格</a>在Home/Index.cshtml視圖中,點擊按鈕,彈出部分視圖內(nèi)容:
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<button id="p">打印已經(jīng)確定好的內(nèi)容</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>
}點擊"打印已經(jīng)確定好的內(nèi)容"按鈕:

取消禁用彈出窗口,再次點擊"打印已經(jīng)確定好的內(nèi)容"按鈕:

點擊"打印表格":

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Grid或者DataTable中數(shù)據(jù)導出為Excel原來這么簡單
以前一直認為,將Grid 或者DataTable中的數(shù)據(jù)導出到Excel功能實現(xiàn)會非常復雜,可能會想用什么類庫什么的或者實在太難就用csv算了,沒想到真的很簡單,需要了解的朋友可以參考下2012-12-12
ASP.NET WebAPI2復雜請求跨域設(shè)置的方法介紹
這篇文章主要給大家介紹了關(guān)于ASP.NET WebAPI2復雜請求跨域設(shè)置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用ASP.NET具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-07-07
asp.net System.Guid ToString五種格式
這篇文章主要介紹了asp.net System.Guid ToString五種格式,需要的朋友可以參考下2017-02-02
設(shè)置默認Ajax操作cache and error
設(shè)置默認Ajax操作cache and error,需要的朋友可以參考一下2013-02-02
詳解ASP.NET MVC 解析模板生成靜態(tài)頁(RazorEngine)
我們在很多項目開發(fā)中會常常用到頁面靜態(tài)化,本篇文章主要介紹了詳解ASP.NET MVC 解析模板生成靜態(tài)頁(RazorEngine) ,具有一定的參考價值,有興趣的可以了解一下。2017-03-03

