如何用css打印树视图

How to print Treeview with css

本文关键字:视图 打印 css 何用      更新时间:2023-09-26

我使用下面的脚本打印我的树视图,但我面临的问题是,打印方法打印没有任何CSS !!

我想要两样东西:

  1. 关于CSS,我希望树的每一层都有特定的颜色。
  2. 用css样式打印树视图

<script type="text/javascript">
            function addSubNodes(nodes) {
                for (var i = 0; i < nodes.get_count(); i++) {
                    if (nodes.getNode(i).get_level() > 0) {
                        for (var j = 0; j < nodes.getNode(i).get_level(); j++) {
                            content += "&nbsp;&nbsp;&nbsp;";
                        }
                    }
                    if (nodes.getNode(i).get_nodes().get_count() > 0) {
                        content += "-"
                    }
                    content += nodes.getNode(i).get_text() + "<br>";
                    if (nodes.getNode(i).get_expanded()) {
                        addSubNodes(nodes.getNode(i).get_nodes());
                    }
                }
            }
            var content = "";
            function PrintMe(node) {
                var treeView = $find("<%= RadTreeView1.ClientID %>");
                var nodes = treeView.get_nodes();
                addSubNodes(nodes);
                var pwin = window.open('', 'print_content', 'width=800,height=700,scroll=no');
                pwin.document.open();
                pwin.document.write(
                '<html><body onload="window.print()">' + content + '</body></html>');
                pwin.document.close();
                setTimeout(
    function() { pwin.close(); }, 1000);
                for (var j = 0; j < nodes.length; j++) {
                    if (nodes[j].get_nodes() != null) {
                        if (nodes[j].get_nodes().get_count() != 0) {
                            nodes[j].collapse();
                        }
                    }
                }
            }
            function printSelection(node) {
                var treeView = $find("<%= RadTreeView1.ClientID %>");
                var nodes = treeView.get_allNodes();
                for (var i = 0; i < nodes.length; i++) {
                    if (nodes[i].get_nodes() != null) {
                        if (nodes[i].get_nodes().get_count() != 0) {
                            nodes[i].expand();
                        }
                    }
                }
                var content = "";
                for (var i = 0; i < nodes.length; i++) {
                    if (nodes[i].get_level() > 0) {
                        for (var j = 0; j < nodes[i].get_level(); j++) {
                            content += "&nbsp;&nbsp;&nbsp;";
                        }
                    }
                    if (nodes[i].get_nodes().get_count() > 0) {
                        content += "-"
                    }
                    content += nodes[i].get_text() + "<br>";
                }
                var pwin = window.open('', 'print_content', 'width=800,height=700,scroll=no');
                pwin.document.open();
                pwin.document.write(
                '<html><body onload="window.print()">' + content + '</body></html>');
                pwin.document.close();
                setTimeout(
    function() { pwin.close(); }, 1000);
                for (var j = 0; j < nodes.length; j++) {
                    if (nodes[j].get_nodes() != null) {
                        if (nodes[j].get_nodes().get_count() != 0) {
                            nodes[j].collapse();
                        }
                    }
                }
            } 
        </script>

 <telerik:RadTreeView runat="server" ID="RadTreeView1" DataSourceID="ObjectDataSource1"
            DataFieldID="main_code" DataFieldParentID="father_code" DataTextField="name"
            Skin="MetroTouch">
            <DataBindings>
                <telerik:RadTreeNodeBinding Expanded="true"></telerik:RadTreeNodeBinding>
            </DataBindings>
        </telerik:RadTreeView>

示例FROM FireBug:

<ul class="rtUL rtLines">
        <li class="rtLI rtFirst rtLast"><div class="rtTop">
            <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">0</span>
        </div><ul class="rtUL">
            <li class="rtLI rtLast"><div class="rtBot">
                <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">10000</span>
            </div><ul class="rtUL">
                <li class="rtLI rtLast"><div class="rtBot">
                    <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">10001</span>
                </div><ul class="rtUL">
                    <li class="rtLI"><div class="rtTop">
                        <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">10002</span>
                    </div><ul class="rtUL">
                        <li class="rtLI"><div class="rtTop">
                            <span class="rtSp"></span><span class="rtIn">1</span>
                        </div></li><li class="rtLI"><div class="rtMid">
                            <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">10003</span>
                        </div><ul class="rtUL">
                            <li class="rtLI"><div class="rtTop">
                                <span class="rtSp"></span><span class="rtIn">5</span>
                            </div></li><li class="rtLI"><div class="rtMid">
                                <span class="rtSp"></span><span class="rtIn">6</span>
                            </div></li><li class="rtLI"><div class="rtMid">
                                <span class="rtSp"></span><span class="rtIn">7</span>
                            </div></li><li class="rtLI"><div class="rtMid">
                                <span class="rtSp"></span><span class="rtIn">8</span>
                            </div></li><li class="rtLI"><div class="rtMid">
                                <span class="rtSp"></span><span class="rtIn">9</span>
                            </div></li><li class="rtLI"><div class="rtMid">
                                <span class="rtSp"></span><span class="rtIn">10</span>
                            </div></li><li class="rtLI"><div class="rtMid">
                                <span class="rtSp"></span><span class="rtIn">11</span>
                            </div></li><li class="rtLI rtLast"><div class="rtBot">
                                <span class="rtSp"></span><span class="rtIn">12</span>
                            </div></li>
                        </ul></li><li class="rtLI"><div class="rtMid">
                            <span class="rtSp"></span><span class="rtIn">20</span>
                        </div></li><li class="rtLI"><div class="rtMid">
                            <span class="rtSp"></span><span class="rtIn">21</span>
                        </div></li><li class="rtLI"><div class="rtMid">
                            <span class="rtSp"></span><span class="rtIn">22</span>
                        </div></li><li class="rtLI rtLast"><div class="rtBot">
                            <span class="rtSp"></span><span class="rtIn">23</span>
                        </div></li>
                    </ul></li><li class="rtLI"><div class="rtMid">
                        <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">10004</span>
                    </div><ul class="rtUL">
                        <li class="rtLI"><div class="rtTop">
                            <span class="rtSp"></span><span class="rtIn">25</span>
                        </div></li><li class="rtLI rtLast"><div class="rtBot">
                            <span class="rtSp"></span><span class="rtMinus"></span><span class="rtIn">10005</span>
                        </div><ul class="rtUL">
                            <li class="rtLI"><div class="rtTop">
                                <span class="rtSp"></span><span class="rtIn">30</span>
                            </div></li><li class="rtLI rtLast"><div class="rtBot">
                                <span class="rtSp"></span><span class="rtIn">31</span>
                            </div></li>
                        </ul></li>
                    </ul></li><li class="rtLI"><div class="rtMid">
                        <span class="rtSp"></span><span class="rtIn">35</span>
                    </div></li><li class="rtLI rtLast"><div class="rtBot">
                        <span class="rtSp"></span><span class="rtIn">40</span>
                    </div></li>
                </ul></li>
            </ul></li>
        </ul></li>
    </ul>

将HTML复制到新文档中,因此预计会丢失样式。尝试打印当前文档。将生成的HTML复制到具有特殊类的div中,并使用只显示该div的print CSS规则。下面是一个示例,它将只打印页面的一部分,同时仍然保留页面的CSS:

<html>
<head id="Head1" runat="server">
    <title></title>
    <style type="text/css">
        div 
        {
            color: Red;
        }
        .myPrintDiv 
        {
            display: none;
        }
        @media print
        {
            .mainContent
            {
                display: none;
            }
            .myPrintDiv
            {
                display: block;
            }
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="Scriptmanager1" runat="server" />
    <div class="mainContent">
        all the contents on the page
    </div>
    <div class="myPrintDiv">
        put the HTML you generate here so it still inherits the page styles
    </div>
    <script type="text/javascript">
        window.onload = function () { window.print(); };
    </script>
    </form>
</body>
</html>