Será alguna artimaña de Microsoft??? Sin importar si así es, he aquí la solución a ello:
Primero deben decargar esta dll y agregarla como referencia a su Sitio Web: PrintButtonDLL (Opción 1)
Si este link no funciona, por favor usen este: PrintButtonDLL (Opción 2)
Si necesitan ayuda para agregar una referencia a su proyecto Web, pueden consultar este artículo: Agregar Referencia a proyecto Web
En su página Web deben agregar un control llamado ReportViewer y en este caso lo llamaremos "rvReportes".
Es necesario agregar la siguiente referencia:
<%@ Register assembly="printButtonDLL" namespace="printButtonDLL" tagprefix="cc1" %>
Luego dentro de la etiqueta Body de su página agreguen esta línea:
<cc1:PrintButton ID="PrintButton1" runat="server" ReportName="rvReportes" />
Ya con el ReportViewer agregado, debe quedar así:
<body>
<form id="form1" runat="server">
<div>
<rsweb:ReportViewer ID="rvReportes" runat="server" ProcessingMode="Remote"
Width="850px" Height="590px" Font-Names="Verdana" Font-Size="8pt">
<ServerReport ReportServerUrl="" />
</rsweb:ReportViewer>
<br />
<cc1:PrintButton ID="PrintButton1" runat="server" ReportName="rvReportes" />
</div>
</form>
</body>
El siguiente paso es agregar el siguiente código en la misma página, dentro del Head, debe quedar así:
<head id="Head1" runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" language="javascript" type="text/javascript"></script>
<script type="text/javascript">
function $_create(elem, tag, target) { return addElem(elem, target, tag) }
function $_add(elem, target) { return addElem(elem, target) }
function $_GB() { return GetBrowser(); }
function GetBrowser() {
//JQuery Script;
if ($.browser.mozilla)
return 'FF';
else if ($.browser.msie)
return 'IE';
else if ($.browser.webkit)
return 'OP';
else if ($.browser.opera)
return 'WK';
else
return 'FF';
}
function addElem(elem, target, tag) {
if (typeof elem === 'string') {
var el = document.getElementById(elem);
if (!el) {
el = document.createElement(tag);
el.id = elem;
}
elem = el;
}
if (target) {
var dest;
if (typeof target === 'string')
dest = document.getElementById(target);
else
dest = target;
dest.appendChild(elem);
}
return elem;
}
function insert(elem, target) {
if (typeof target === 'string')
target = document.getElementById(target);
var myDoc = target.contentWindow || target.contentDocument;
if (myDoc.document) {
myDoc = myDoc.document;
}
var headLoc = myDoc.getElementsByTagName("head").item(0);
var scriptObj = myDoc.createElement("script");
scriptObj.setAttribute("type", "text/javascript");
scriptObj.innerHTML = 'window.print();';
if (elem)
elem = document.getElementById(elem);
if (elem)
headLoc.appendChild(elem);
else
headLoc.appendChild(scriptObj);
}
</script>
</head>
Ya con esta solución queda así:
Por último, al hacer clic en el botón de imprimir, deben seleccionar la opción que recomiendo a continuación:
Listo!!!!!!!!!
En su página Web deben agregar un control llamado ReportViewer y en este caso lo llamaremos "rvReportes".
Es necesario agregar la siguiente referencia:
<%@ Register assembly="printButtonDLL" namespace="printButtonDLL" tagprefix="cc1" %>
Luego dentro de la etiqueta Body de su página agreguen esta línea:
<cc1:PrintButton ID="PrintButton1" runat="server" ReportName="rvReportes" />
Ya con el ReportViewer agregado, debe quedar así:
<body>
<form id="form1" runat="server">
<div>
<rsweb:ReportViewer ID="rvReportes" runat="server" ProcessingMode="Remote"
Width="850px" Height="590px" Font-Names="Verdana" Font-Size="8pt">
<ServerReport ReportServerUrl="" />
</rsweb:ReportViewer>
<br />
<cc1:PrintButton ID="PrintButton1" runat="server" ReportName="rvReportes" />
</div>
</form>
</body>
El siguiente paso es agregar el siguiente código en la misma página, dentro del Head, debe quedar así:
<head id="Head1" runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" language="javascript" type="text/javascript"></script>
<script type="text/javascript">
function $_create(elem, tag, target) { return addElem(elem, target, tag) }
function $_add(elem, target) { return addElem(elem, target) }
function $_GB() { return GetBrowser(); }
function GetBrowser() {
//JQuery Script;
if ($.browser.mozilla)
return 'FF';
else if ($.browser.msie)
return 'IE';
else if ($.browser.webkit)
return 'OP';
else if ($.browser.opera)
return 'WK';
else
return 'FF';
}
function addElem(elem, target, tag) {
if (typeof elem === 'string') {
var el = document.getElementById(elem);
if (!el) {
el = document.createElement(tag);
el.id = elem;
}
elem = el;
}
if (target) {
var dest;
if (typeof target === 'string')
dest = document.getElementById(target);
else
dest = target;
dest.appendChild(elem);
}
return elem;
}
function insert(elem, target) {
if (typeof target === 'string')
target = document.getElementById(target);
var myDoc = target.contentWindow || target.contentDocument;
if (myDoc.document) {
myDoc = myDoc.document;
}
var headLoc = myDoc.getElementsByTagName("head").item(0);
var scriptObj = myDoc.createElement("script");
scriptObj.setAttribute("type", "text/javascript");
scriptObj.innerHTML = 'window.print();';
if (elem)
elem = document.getElementById(elem);
if (elem)
headLoc.appendChild(elem);
else
headLoc.appendChild(scriptObj);
}
</script>
</head>
Ya con esta solución queda así:
Por último, al hacer clic en el botón de imprimir, deben seleccionar la opción que recomiendo a continuación:
Listo!!!!!!!!!
Te falto:
ResponderEliminar<%@ Register Assembly="printButtonDLL" Namespace="printButtonDLL" TagPrefix="cc1" %>
Cuando la utilizo en una pestaña que tiene Master.Page no me funciona, me podrías ayudar diciendo Por que?
ResponderEliminarAmigo no me funciona, hago todos tus pasos y nada, tengo vs2010 .......
ResponderEliminarhargir,
ResponderEliminarYo lo utilicé con Visual Studio 2008.
Podrías probar con Visual Studio 2010 pero seleccioná Framework 3.0 ó 3.5
a mi me aparece el boton abajo, pero cuando le doy click hace postback pero no hace nada, yo lo estoy utilizando en un webusercontrol, que tengo que hacer para que me funciones correctamente
ResponderEliminara mi me pasa igual boton abajo
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarTengo el mismo problema que Lea, me aparece el botón abajo, pero al darle clic solo hace postback, y luego nada. Al ver en Firebug, me aparece el error: "TypeError: refTD is null". Lo estoy probando con .NET Framework 4.5, y no me puedo pasar a 3.5 ni a 3 debido a que estoy trabajando con MVC3. ¿Alguna idea? Muchas gracias de antemano.
ResponderEliminarHola Guillermo, tengo el mismo problema que tu, pudiste encontrar la solución?
EliminarGracias y saludos
No me funciona con Visual Studio 2010
ResponderEliminarFUnciona perfecto connvisual studio 2010 el problema es que no funciona si uso iframes....
ResponderEliminar¿puede imprimir varias paginas de datos o solo lo que se muestra en pantalla?
ResponderEliminarno me funciono el mismo problema que Lea
ResponderEliminarUna vez que mando a imprimir quiero cerrar la pagina como hago?
ResponderEliminarNo funciona para imprimir todas las paginas en su totalidad
ResponderEliminar