印刷
尽管Grid的内容可能不是页面上的唯一内容,但Grid提供了忽略页面其余部分并只打印其内容的选项。
要从页面中只打印网格,请使用以下方法之一:
- 打印现有页面,用打印CSS隐藏不相关的内容。
- 打印一个单独的网页,上面只有网格。
打印现有网页
若要将网格仅作为现有网页的一部分打印出来,请使用打印样式表来隐藏页面中不需要的部分。用于打印的确切CSS将取决于现有的页面内容。
打印新网页
下面的示例演示如何检索Grid的HTML,将其注入到新的浏览器窗口中,并打印新页面。这种方法还解决了以下重要问题:
- 如果“网格”是可滚动的,则某些行或列在打印的纸张上可能不可见。因此,在打印友好的页面上禁用了网格高度和可滚动性。
- 根据列宽度的不同,一些单元格内容可能会被剪切而不完全可见。这个问题通过强制自动解决
表布局
到禁用省略号的Grid表(...
). - 如果启用了滚动(除了网格的MVC包装器外,这是默认设置),网格将呈现一个标题区单独的表.因为浏览器没有关联这两个Grid表,所以它不会在每个打印页面的顶部重复标题行。下面的示例演示如何通过将头表行克隆到数据表中来解决此问题。
当打印列被锁定(冻结)的Grid时,结果列或行可能会不对齐,或者整体布局会被破坏。在这种情况下,使用单独的打印友好的Grid实例,不冻结列。
@(Html.Kendo().Grid
() .Name(" Grid") .Columns(c => {c. bound (f => f. orderid);c.绑定(f => f.ShipCountry);}) .DataSource (d = > {d.Ajax () .Read (r = > r.Action(“ReadOrders”、“家”));})) <脚本>函数printGrid() {var gridElement = $('#grid'), printableccontent = ", win =窗口。Open (", ", 'width=800, height=500, resized =1, scrollbars=1'), doc = win.document.open();var htmlStart = '' + '' + '' + '' + ' 剑道UI Grid ' + ' ' + '' + '' + ''; var htmlEnd = '' + ''; var gridHeader = gridElement.children('.k-grid-header'); if (gridHeader[0]) { var thead = gridHeader.find('thead').clone().addClass('k-grid-header'); printableContent = gridElement .clone() .children('.k-grid-header').remove() .end() .children('.k-grid-content') .find('table') .first() .children('tbody').before(thead) .end() .end() .end() .end()[0].outerHTML; } else { printableContent = gridElement.clone()[0].outerHTML; } doc.write(htmlStart + printableContent + htmlEnd); doc.close(); win.print(); } $('#printGrid').click(function () { printGrid(); });