我有以下代码:
<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之外,则此方法有效,但现在由于它正在执行某些服务器端操作,因此无效。我也没有收到任何错误消息,它只是无所事事。
答案 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>