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 に答える