Esta documentación está en fase de desarrollo y puede contener errores.

Tablas e informes

El puente entre el SDK y la UI: ejecutas un informe de Dinaup Flex y repartes sus filas a tabla, tarjetas, gráfica o ranking, con filtros incluidos.

Un informe de Dinaup Flex vive en el servidor: tú lo pides por su ReportId con el SDK .NET y te devuelve filas tipadas con sus columnas, formatos y totales. Esta familia coge ese resultado y lo pinta —tabla, tarjetas, gráfica o ranking— con el mismo aspecto que Play y sin que escribas una sola RadzenDataGridColumn a mano.

La decisión es una sola: ¿quieres una rejilla completa o varias vistas del mismo informe a la vez? Para lo primero, DnzReportView directo. Para lo segundo, DnzReportProvider como contenedor que carga el informe una vez y lo reparte por cascada a sus hijos.

El ReportId es el GUID del informe definido en Flex / Informes. Lo mismo que alimenta los listados de Play alimenta estos componentes.


¿Tabla suelta o dashboard?

DnzReportView resuelve el caso completo: cabecera, buscador, exportar CSV, paginación server-side y filtros por columna.

<DnzReportView Client=@Client ReportId="3f2a9c10-8b4e-4d21-9f77-1a2b3c4d5e6f" />

DnzReportProvider carga el informe una vez y lo expone como cascada (ReportContext). Dentro metes las vistas que quieras, todas leyendo de la misma carga: una llamada al servidor, varias representaciones.

<DnzReportProvider Client=@Client ReportId="7c1d4e90-2f5a-41b8-bc63-9e0a1b2c3d4f">
    <DnzChartView ChartType="DnzChartView.ChartTypeE.Column" />
    <DnzTopN N="5" />
</DnzReportProvider>

DnzReportView con OnItemSelect te da la fila pulsada como DinaupDynamicRowDTO. Es la base de los selectores relacionales y de los pickers de Play; mira Selectores si tu caso es "elige una ficha".

DnzReportView pinta una tabla por sí solo. DnzReportProvider no dibuja nada: es el grifo de datos para DnzCardList, DnzChartView y DnzTopN. No los mezcles esperando que el Provider muestre una rejilla.


DnzReportView

La tabla completa de Play a partir de un ReportId: columnas tipadas, orden multi-columna, filtros avanzados, paginación server-side, exportar CSV y doble clic para abrir la ficha.

<RadzenCard>
    <DnzCardTitle Title="Facturas emitidas" Icon="receipt_long" />
    <DnzReportView Client=@Client ReportId="3f2a9c10-8b4e-4d21-9f77-1a2b3c4d5e6f" OnItemSelect=@AbrirFactura />
</RadzenCard>

@code {
    private async Task AbrirFactura(DinaupDynamicRowDTO fila) {
        await DnzFormView.OpenAsync(DialogService, Client, fila.SectionId, fila.ID);
    }
}

Para embeberlo dentro de otra ficha sin barra de título ni botón de añadir:

<DnzReportView Client=@Client ReportId=@Container.TokenList ShowTitle=false ShowAdd=false />

Parámetros

ParámetroTipoPor defectoQué hace
ClientDinaupClientCRequerido. Cliente del SDK que ejecuta el informe contra el servidor.
ReportIdstring""Requerido. GUID del informe a cargar.
VariablesValuesDictionary<string, string>Valores de las variables del informe; si faltan, se pregunta al usuario antes de pintar.
QuerySearchstring""Texto de búsqueda inicial. Cambiarlo en caliente recarga el informe.
AdvancedFilterList<FilterCondition>Filtro server-side aplicado de entrada, además de los que ponga el usuario.
Limitint50Tamaño de página inicial. El usuario puede subirlo (25–3000).
OrdenDictionary<string, bool>Orden inicial por columna (true = ascendente).
ShowTitlebooltrueMuestra la cabecera con icono, título y selector de columnas visibles.
Titlestring""Sobrescribe el título; si está vacío, usa el del informe.
ShowSearchbooltrueMuestra el buscador de la cabecera.
FiltrablebooltrueHabilita los filtros por columna en las cabeceras.
ShowAddbooltrueMuestra el botón "+" para crear un registro de la sección del informe.
AdminModeboolfalseCarga el informe en modo administrador (sin algunos filtros de visibilidad).
ToolBarTemplateRenderFragmentContenido extra inyectado en la barra de herramientas de la rejilla.
OnItemSelectEventCallback<DinaupDynamicRowDTO>Se dispara al seleccionar una fila. Si lo defines, sustituye la apertura automática de la ficha.
OnDataChangedEventCallbackSe dispara cada vez que el informe (re)carga sus datos.

Las columnas visibles se recuerdan por URL + ReportId en localStorage, igual que en Play: el usuario ajusta una vez y se mantiene. Las columnas de moneda salen con DnzSpanMoney (rojo en negativos) y suma en el pie automáticamente.

Las columnas se pintan solas

No declaras columnas. DnzReportView lee el formato de cada campo del informe (DEC, INT, DATE, BOOL, texto…) y elige la plantilla adecuada: importes con DnzSpanMoney y suma en el pie, fechas en formato local, booleanos como badge Sí/No, estados con color. Tú solo le das el ReportId; el informe manda.

Lo único que personalizas por plantilla es la barra de herramientas, vía ToolBarTemplate:

<DnzReportView Client=@Client ReportId="3f2a9c10-8b4e-4d21-9f77-1a2b3c4d5e6f">
    <ToolBarTemplate>
        <RadzenButton Text="Acción" Icon="bolt" Size="ButtonSize.Small" Click=@HacerAlgoAsync IsBusy=@_busy />
    </ToolBarTemplate>
</DnzReportView>

Abrirlo sin colocarlo en el markup

DnzReportView expone dos métodos estáticos para abrirlo bajo demanda como diálogo o ventana flotante:

DnzReportView.OpenAsWindow(WindowManager, Client, "3f2a9c10-8b4e-4d21-9f77-1a2b3c4d5e6f", title: "Facturas", icon: "receipt_long");

Firma real:

public static string OpenAsWindow(DnzWindowManagerService wm, DinaupClientC client, string reportId, Dictionary<string, string> vars = null, string title = "Informe", string icon = "analytics")

DnzReportProvider

Contenedor "headless": carga el informe una vez y lo reparte por cascada a sus hijos vía ReportContext. No dibuja tabla; es el grifo de datos para dashboards con varias vistas del mismo informe.

<DnzReportProvider Client=@Client ReportId="7c1d4e90-2f5a-41b8-bc63-9e0a1b2c3d4f">
    <div class="d-flex flex-column gap-3">
        <DnzChartView ChartType="DnzChartView.ChartTypeE.Bar" />
        <DnzTopN N="5" />
        <DnzCardList MaxFields="3" />
    </div>
</DnzReportProvider>

Las vistas hijas van dentro de ChildContent (el contenido entre las etiquetas del Provider), así que es un RenderFragment: metes el markup que quieras y las vistas leen el contexto por cascada.

Parámetros

ParámetroTipoPor defectoQué hace
ClientDinaupClientCRequerido. Cliente del SDK que ejecuta el informe.
ReportIdstring""Requerido. GUID del informe a cargar.
VariablesValuesDictionary<string, string>Valores de las variables del informe; si faltan, se pregunta antes de pintar los hijos.
QuerySearchstring""Búsqueda aplicada a la carga.
AdvancedFilterList<FilterCondition>Filtro server-side aplicado a la carga.
Limiteint500Número de filas que trae para alimentar los hijos.
OrdenDictionary<string, bool>Orden de las filas que se cargan.
AdminModeboolfalseCarga el informe en modo administrador.
ChildContentRenderFragmentLas vistas que consumen el contexto (tarjetas, gráficas, ranking).
OnDataLoadedEventCallbackSe dispara cuando termina la carga del informe.

El Provider analiza las columnas del informe y deja preparado el mapeo del ReportContext (qué columna es la numérica principal, cuál es la de categoría/estado, cuál es de moneda…). Por eso DnzChartView, DnzTopN y DnzCardList funcionan sin que les digas qué columna pintar: lo adivinan del informe. Si no aciertan, se lo fuerzas con ValueColumn / CategoryColumn.


DnzCardList

Pinta las filas del informe como tarjetas en vez de rejilla: título, una imagen de preview si la fila la trae, unos pocos campos y el importe destacado. Va dentro de un DnzReportProvider.

<DnzReportProvider Client=@Client ReportId="7c1d4e90-2f5a-41b8-bc63-9e0a1b2c3d4f">
    <DnzCardList MaxFields="4" OnItemSelect=@AbrirFicha />
</DnzReportProvider>

@code {
    private async Task AbrirFicha(DinaupDynamicRowDTO fila) {
        await DnzFormView.OpenAsync(DialogService, Client, fila.SectionId, fila.ID);
    }
}

Parámetros

ParámetroTipoPor defectoQué hace
MaxFieldsint4Cuántos campos secundarios muestra cada tarjeta (sin contar el título ni el importe).
OnItemSelectEventCallback<DinaupDynamicRowDTO>Se dispara al pulsar una tarjeta. Si lo defines, sustituye la apertura automática de la ficha.

Además acepta atributos extra (class, style, data-*…) que se aplican al div raíz de la lista.

La columna de moneda y el campo principal los elige el componente leyendo el mapeo del informe: el importe sale destacado a la derecha con DnzSpanMoney, las fechas en formato local y los estados con badge de color. Si la fila trae imagen de preview, la pinta redonda o cuadrada según el propio dato.


DnzChartView

Gráfica del informe (columnas, barras, líneas, área o tarta) agrupando por una categoría y sumando una métrica. Vive dentro de DnzReportProvider.

<DnzReportProvider Client=@Client ReportId="7c1d4e90-2f5a-41b8-bc63-9e0a1b2c3d4f">
    <DnzChartView ChartType="DnzChartView.ChartTypeE.Column" CategoryColumn="cliente" ValueColumn="total_facturado" MaxItems="12" />
</DnzReportProvider>

Parámetros

ParámetroTipoPor defectoQué hace
ChartTypeChartTypeEColumnTipo de gráfica: Column, Bar, Line, Area o Pie.
ValueColumnstringKeyword de la métrica a representar. Si lo omites, usa la numérica principal del informe.
CategoryColumnstringKeyword de la categoría del eje X. Si lo omites, usa la columna de estado o la primera de texto.
MaxItemsint20Máximo de categorías (las de mayor valor); el resto se descarta.

Además acepta atributos extra que se aplican al div raíz de la gráfica.

ChartTypeE es un enum anidado del propio componente, por eso en el markup va como DnzChartView.ChartTypeE.Column. Las filas se agrupan por CategoryColumn y se suma ValueColumn por grupo, así que un informe de líneas de factura se convierte en "total por cliente" sin más.


DnzTopN

Ranking visual de barras horizontales con las N filas de mayor (o menor) valor del informe. Va dentro de un DnzReportProvider.

<DnzReportProvider Client=@Client ReportId="7c1d4e90-2f5a-41b8-bc63-9e0a1b2c3d4f">
    <DnzTopN N="5" ValueColumn="total_facturado" />
</DnzReportProvider>

Parámetros

ParámetroTipoPor defectoQué hace
Nint10Cuántas filas mostrar en el ranking.
ShowTitlebooltrueMuestra la cabecera "Top N — Columna".
ValueColumnstringKeyword de la columna a rankear. Si lo omites, usa la numérica principal del informe.
Ascendingboolfalsetrue para mostrar los valores más bajos primero.

Si la columna es de tipo moneda o minutos, el valor se formatea solo con DnzSpanMoney / DnzSpanMinutes. No tienes que indicar el formato: lo hereda del informe. Si el informe no tiene ninguna columna numérica representable, DnzTopN no pinta nada.


DnzFilter

El sistema de filtros por columna de DnzReportView. No lo colocas tú: la propia tabla lo inserta en la cabecera de cada columna y elige el filtro adecuado según el tipo del campo.

<FilterTemplate Context="data">
    <DnzFilter Column=@col DataColumn=@data />
</FilterTemplate>

Parámetros

ParámetroTipoPor defectoQué hace
ColumnDinaupFieldDTODefinición de la columna del informe (tipo, formato, valores predefinidos).
DataColumnRadzenDataGridColumn<DinaupDynamicRowDTO>La columna de la rejilla a la que se ata el filtro.

DnzFilter es un router: según el formato de la columna delega en el filtro especializado correspondiente. La familia completa:

FiltroCuándo entra
DnzTextFilterTexto libre (por defecto).
DnzIntegerFilterColumnas INT.
DnzDecimalFilterColumnas DEC.
DnzDateFilter / DnzDateTimeFilter / DnzTimeFilterFechas, fecha-hora y hora.
DnzBoolFilterBooleanos.
DnzBadgeFilterColumnas con estilo de badge.
DnzPredefinedFilterColumnas con lista de valores predefinidos.

No documentamos cada filtro por separado porque no los instancias a mano: pones DnzReportView y el filtro correcto aparece según el informe. El concepto de filtrado server-side y cómo definir filtros de entrada vive en Flex / Informes.


Leer una fila

Las filas que reparten estos componentes son DinaupDynamicRowDTO. Para sacar el texto de una columna usa .GetLegible("columna"); ID y SectionId vienen rellenos para abrir la ficha.

@code {
    private async Task AbrirFila(DinaupDynamicRowDTO fila) {
        var nombre = fila.GetLegible("cliente");
        await DnzFormView.OpenAsync(DialogService, Client, fila.SectionId, fila.ID);
    }
}

Relacionado

Volver a Componentes · DinaZen · SDK .NET

On this page