0

我有这样的网格:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataKeyNames="StudentNum" DataSourceID="SqlDataSource1" Width="1314px">
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ItemStyle-CssClass="ColVisible" HeaderStyle-CssClass="ColVisible" FooterStyle-CssClass="ColVisible"/>
        <asp:BoundField DataField="StudentNum" HeaderText="Student Number" ReadOnly="True" SortExpression="StudentNum" />
        <asp:BoundField DataField="Name" HeaderText="Name" ReadOnly="True" SortExpression="Name" />
        <asp:BoundField DataField="Surname" HeaderText="Surname" ReadOnly="True" SortExpression="Surname" />
        <asp:BoundField DataField="Degree" HeaderText="Degree" ReadOnly="True" SortExpression="Degree" />
        <asp:BoundField DataField="Average" HeaderText="Average" ReadOnly="True" SortExpression="Average" />
    </Columns>
</asp:GridView>

在打印按钮上,我写了以下内容:

<asp:Button ID="btnPrintCurrent" runat="server" Text="Print" 
            OnClientClick="doPrint()" />

并打印我写的Javascript:

<script type="text/javascript">
    function doPrint() {
        var strContent = "<html><head>";
        strContent = strContent + "<title" + "></title>";
        strContent = strContent + "<link href='App_Themes/Default.css' rel='stylesheet'/>";
        strContent = strContent + "</head><body>";
        strContent = strContent + "<div style='width:100%;text-align:left;'>";
        strContent = strContent + "<img src='~/Images/bannerNMMULogo.png'/>";
        strContent = strContent + "<h1>CS Honours Project Allocation System</h1>";
        strContent = strContent + "</div>";
        var prtContent = document.getElementById('<%= GridView1.ClientID %>');

        strContent = strContent + prtContent.outerHTML;
        prtContent.border = 0; //set no border here
        var WinPrint = window.open('', '', 'left=100,top=100,width=1000,height=1000,toolbar=0,scrollbars=1,status=0,resizable=1');
        WinPrint.document.write(strContent);
        WinPrint.document.close();
        WinPrint.focus();
        WinPrint.print();
        WinPrint.close();
    }
</script>

我的问题是:

  1. 打印预览时看不到图像
  2. 我想<asp:CommandField>在打印预览时隐藏第一列,删除/编辑按钮
4

2 回答 2

0

你的代码不简单。如果您想打印,只需像这样链接特殊的 css 打印,然后您的代码window.print();

我看到您的代码只想先弹出然后打印。如果你想这样,你可以简单地创建打印特殊页面,添加不带 asp 命令字段的 gridview 并附加链接 css 打印。然后你的代码应该是这样的:

function doPrint() {
    var WinPrint = window.open('pageprint.aspx', '', 'left=100,top=100,width=1000,height=1000,toolbar=0,scrollbars=1,status=0,resizable=1');
    WinPrint.focus();
    WinPrint.print();
    WinPrint.close();
}

我希望这对你有帮助。

于 2013-09-12T03:22:15.367 回答
0

如果按下它,asp:button 会引发对后端的回调。如果您没有后端代码,则您的 javascript 函数必须返回 false 以停止回调

添加返回假;到结束的javascript函数

<script type="text/javascript">
        function doPrint() {
.....
        return false;
        }
</script>

对于您需要使用 jquery 的第二个问题,也许您可​​以在这里找到解决方案jQuery remove HTML table column

于 2013-09-11T21:15:46.827 回答