MVC3 WebGrid打印整个网格值而不仅仅是页面

时间:2012-11-09 05:02:37

标签: asp.net asp.net-mvc-3 webgrid

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

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

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

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

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

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

1 个答案:

答案 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将导致出现浏览器的“打印”对话框,显示所有数据。