我正在使用MVC WebGrid并启用分页以更好地管理屏幕空间。
一切进展顺利,直到最终用户打印他们想要查看所有数据的页面,而不仅仅是分页数据。
当用户打印屏幕时,我是否可以返回整个数据量而不仅仅是打印窗口中的分页结果?
我真的不想做的真正的肮脏黑客就是渲染一个标准表,用css隐藏它并创建一个只显示这个隐藏表的打印css文件。
有没有人有更好的解决方案?
答案 0 :(得分:1)
你无法让浏览器打印出那些不存在的东西,并且显示所有数据只是为了隐藏大部分数据的想法,正如你所说,是一个“真正的肮脏黑客”。最干净的选择是为您提供自己的“打印”按钮,该按钮链接到另一个操作,该操作返回包含已关闭分页的WebGrid的View。
简化内容 - 这是返回Print视图的操作:
public ActionResult Print() {
var db = new NorthwindEntities();
var products = db.Products.ToList();
return View(products);
}
这是视图:
@model IEnumerable<MvcApplication1.Models.Product>
@{
ViewBag.Title = "Print";
var grid = new WebGrid(Model, canPage: false);
}
@grid.GetHtml()
<script>
$(function() {
window.print();
});
</script>
您需要确保引用了jQuery,并且JavaScript将导致出现浏览器的“打印”对话框,显示所有数据。