Html输入按钮,用于从gridview内部执行打印

时间:2018-03-21 14:42:00

标签: javascript html asp.net input printing

我有以下代码:

<asp:GridView ID="GridViewProducts" runat="server" AutoGenerateColumns="false" OnSelectedIndexChanged="GridViewProducts_SelectedIndexChanged" OnRowDataBound="GridViewProducts_Bound" CssClass="gridviewproducts"
  DataKeyNames="ID">

   <asp:BoundField DataField="id" />
   <asp:BoundField DataField="nAME" />
   <asp:TemplateField>
        <ItemTemplate>
            <input type="button" id="btnPrint" value="Print" runat="server" onserverclick="Button_ShowDetails_Click" />
       </ItemTemplate>
   </asp:TemplateField>

和我的javascript:

$(function () {
 $("#btnPrint").click(function () {
     var contents = $("#dvContents").html();
     var frame1 = $('<iframe />');
     frame1[0].name = "frame1";
     frame1.css({ "position": "absolute", "top": "-1000000px" });
     $("body").append(frame1);
     var frameDoc = frame1[0].contentWindow ? frame1[0].contentWindow : frame1[0].contentDocument.document ? frame1[0].contentDocument.document : frame1[0].contentDocument;
     frameDoc.document.open();
     //Create a new HTML document.
     frameDoc.document.write('<html><head><title>Bestilling</title>');
     frameDoc.document.write('</head><body>');
     //Append the external CSS file.
     frameDoc.document.write('<link href="Content/Site2.css" rel="stylesheet" type="text/css" />');
     //Append the DIV contents.
     frameDoc.document.write(contents);
     frameDoc.document.write('</body></html>');
     frameDoc.document.close();
     setTimeout(function () {
         window.frames["frame1"].focus();
         window.frames["frame1"].print();
         frame1.remove();
     }, 500);
 });

});

和html:

<div> ... some info to be printed ... </div>

如果按钮位于gridview之外,则此方法有效,但现在由于它正在执行某些服务器端操作,因此无效。我也没有收到任何错误消息,它只是无所事事。

1 个答案:

答案 0 :(得分:0)

看一下生成的HTML。您将看到按钮btnPrint的ID已重命名为GridViewProducts_btnPrint_0,因为GridView(或中继器等)中的ID更多。

更好地绑定GridView中的类名,所以给你的按钮一个类名。

<input type="button" id="btnPrint" class="PrintButton" value="Print" runat="server" />

然后将点击绑定到GridView内该类的所有按钮。

<script type="text/javascript">
    $("#<%= GridViewProducts.ClientID %> .PrintButton").click(function () {
        //do your stuff
    });
</script>