如果这是可能的,我会感到非常惊讶,但这里就是这样。
我正在使用 MVC WebGrid 并启用了分页以更好地管理屏幕空间。
一切都很顺利,直到最终用户询问他们何时打印他们想要查看所有数据的页面,而不仅仅是分页数据。
当用户打印屏幕时,我是否可以返回全部数据量而不是打印窗口中的分页结果?
我真的不想做的一个真正肮脏的黑客行为是渲染一个标准表格,用 css 隐藏它,并创建一个只显示这个隐藏表格的打印 css 文件。
有没有人有更好的解决方案?
如果这是可能的,我会感到非常惊讶,但这里就是这样。
我正在使用 MVC WebGrid 并启用了分页以更好地管理屏幕空间。
一切都很顺利,直到最终用户询问他们何时打印他们想要查看所有数据的页面,而不仅仅是分页数据。
当用户打印屏幕时,我是否可以返回全部数据量而不是打印窗口中的分页结果?
我真的不想做的一个真正肮脏的黑客行为是渲染一个标准表格,用 css 隐藏它,并创建一个只显示这个隐藏表格的打印 css 文件。
有没有人有更好的解决方案?
您无法让浏览器打印不存在的内容,并且正如您所说,显示所有数据只是为了隐藏大部分数据的想法是“真正的肮脏黑客”。最干净的选项是为您提供自己的打印按钮,该按钮链接到另一个操作,该操作返回包含关闭分页的 WebGrid 的视图。
简化的东西 - 这是返回打印视图的操作:
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 将导致浏览器的打印对话框出现,显示所有数据。