Archivo de la categoría ‘Report Viewer’

Limitar los Rows del tablix a N filas por página

O lo que es lo mismo, hacer que salte de página cada N filas.

Me hago eco de este articulo:

  1. Selecciona la fila (las detalle)
  2. Haz click en Add Group ->Parent group (añade un grupo padre a la fila en cuestión)
  3. En el grupo de “Group By expression”, añade esta expresión =Ceiling(RowNumber(Nothing)/20), haz click en OK.
  4.  En Nothing deberias poner el nombre del control donde esta la fila para que pueda hacer el rownumber (En mi caso era “table1″). Ten cuidado por que es case sensitive (Al loro con las mayúsculas).
  5. Ver a “Row Group ->Group Properties”.
  6. Haz click en “Sorting Properties”, quita la expresión para ordenar.
  7. Ve a “Page Breaks” y haz check en “Between Each Instance of Group”.
  8. Si no quieres que se muestre la nueva columna, seleccionala y borrala. Te preguntará si quieres eliminar la columna y la agrupación o solo la columna, selecciona “Only Column”.
  9. Con esto ya tendreis el Tablix limitado a N registros por página.

Mirar también el siguiente artículo. Es interesante sobre todo para que conozcais que se puede hacer con Código dentro de los RDLC.

http://spacefold.com/lisa/post/2010/01/14/Walkthrough-Part-I-Dynamic-interactive-paging-and-another-fierce-look-at-parameters.aspx

Un saludo espero que os haya venido bien.

Eliminar las cabeceras de los .rdlc (Report Viewer)

Aveces se necesitan soluciones un poco drásticas para algunos casos.

Nuestro caso era tener que eliminar todas las cabeceras y footers de los informes, pues bien, o los duplicamos todos quitando las cabeceras o buscamos una manera de poder hacerlo.

Se nos ocurrio editar el esquema del propio rdlc, quitando directamente los headers y los footers.

Ahí va un ejemplo del código. Si necesitais algo más poner un comentario.
Aviso: Esta en el PreRender (ponerlo ahí para poder hacer los cambios)
Un saludo.

protected void EliminarFormato()
{
ReportViewer PageReportViewer = Selector.SelectFirst<ReportViewer>(this.Page);
System.IO.FileInfo fi = new System.IO.FileInfo(Server.MapPath("/") + PageReportViewer.LocalReport.ReportPath);
System.IO.StreamReader sr;
sr = fi.OpenText();
String xslBlock = sr.ReadToEnd();
sr.Close();
//Eliminar cabecera
while (xslBlock.IndexOf("<PageHeader>") >= 0)
{
xslBlock = xslBlock.Remove(xslBlock.IndexOf("<PageHeader>"), xslBlock.IndexOf("</PageHeader>") - xslBlock.IndexOf("<PageHeader>") + 13);
}
//Eliminar pie de página
while (xslBlock.IndexOf("<PageFooter>") >= 0)
{
xslBlock = xslBlock.Remove(xslBlock.IndexOf("<PageFooter>"), xslBlock.IndexOf("</PageFooter>") - xslBlock.IndexOf("<PageFooter>") + 13);
}
//Eliminar saltos de pagina
while (xslBlock.IndexOf("<PageBreak>") >= 0)
{
xslBlock = xslBlock.Remove(xslBlock.IndexOf("<PageBreak>"), xslBlock.IndexOf("</PageBreak>") - xslBlock.IndexOf("<PageBreak>") + 12);
}
//Eliminar Bookmarks
while (xslBlock.IndexOf("<DocumentMapLabel>") >= 0)
{
xslBlock = xslBlock.Remove(xslBlock.IndexOf("<DocumentMapLabel>"), xslBlock.IndexOf("</DocumentMapLabel>") - xslBlock.IndexOf("<DocumentMapLabel>")+19);
}
System.Text.UTF8Encoding Encoder = new System.Text.UTF8Encoding();
byte[] Bytes = Encoder.GetBytes(xslBlock);
System.IO.MemoryStream ms = new System.IO.MemoryStream(Bytes);
PageReportViewer.LocalReport.ReportPath="";
PageReportViewer.LocalReport.LoadReportDefinition(ms);
ms.Dispose();
}
Volver a arriba