C# 如何在打印时隐藏几列并放置徽标图像

C# 如何在打印时隐藏几列并放置徽标图像,c#,asp.net,C#,Asp.net,我有这样的网格: <asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataKeyNames="StudentNum" DataSourceID="SqlDataSource

我有这样的网格:

<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>

函数doPrint(){
var strContent=“”;
strContent=strContent+“”;
strContent=strContent+“”;
strContent=strContent+“”;
strContent=strContent+“”;
strContent=strContent+“”;
strContent=strContent+“CS荣誉项目分配系统”;
strContent=strContent+“”;
var prtContent=document.getElementById(“”);
strContent=strContent+prtContent.outerHTML;
prtContent.border=0;//此处不设置边框
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();
print.print();
WinPrint.close();
}
我的问题是:

  • 打印预览时我无法看到图像
  • 我想在打印预览时隐藏第一列、
    、删除/编辑按钮

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

    添加返回假;结束javascript函数

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

    对于需要使用jquery的第二个问题,您可能在这里找到了一个解决方案

    您的代码并不简单。如果您想打印,只需链接特殊的css打印,就像您的代码
    window.print()

    我看到你的代码只是想先弹出然后打印出来。如果您想这样做,您可以做简单的创建特殊页面打印,添加gridview而不使用asp命令字段和附加链接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();
    }