0

如果这是可能的,我会感到非常惊讶,但这里就是这样。

我正在使用 MVC WebGrid 并启用了分页以更好地管理屏幕空间。

一切都很顺利,直到最终用户询问他们何时打印他们想要查看所有数据的页面,而不仅仅是分页数据。

当用户打印屏幕时,我是否可以返回全部数据量而不是打印窗口中的分页结果?

我真的不想做的一个真正肮脏的黑客行为是渲染一个标准表格,用 css 隐藏它,并创建一个只显示这个隐藏表格的打印 css 文件。

有没有人有更好的解决方案?

4

1 回答 1

1

您无法让浏览器打印不存在的内容,并且正如您所说,显示所有数据只是为了隐藏大部分数据的想法是“真正的肮脏黑客”。最干净的选项是为您提供自己的打印按钮,该按钮链接到另一个操作,该操作返回包含关闭分页的 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 将导致浏览器的打印对话框出现,显示所有数据。

于 2012-12-18T10:33:04.720 回答