Para el ejemplo utilizare una lista de SharePoint con más de 3000 registros, existe un límite por default de 500 registros a visualizar en una colección, para aumentarlo debemos ingresar al Settings de tu app.
Pero solo podemos aumentarlo hasta 2000.
Para el ejemplo lo dejaremos en 500.
Creamos un nuevo Screen y agregamos Vertical container.
Cambiamos el evento Width y Height del Vertical Container.
Dentro del Vertical container agregamos un Data Grid.
Se visualizarán todos los campos de la ListaSharePoint, debemos eliminar las columnas que no queremos visualizar.
Ejecutamos la Screen, vamos al final de la lista y veremos que el ultimo registros visualizado es 500.
No es recommendable aumentar el límite de 500 a 2000 porque no resuelve el problema de delegación, únicamente pospone el impacto, si tu fuente de datos supera los 2000 registros, las consultas no delegables seguirán ignorando cualquier dato posterior al registro 2000.
Al aumentar a 2000 registros, Power Apps debe descargar esos 2000 registros al dispositivo del usuario antes de filtrar o calcular, esto provoca un alto consumo de memoria en dispositivos móviles o navegadores, se prolongan los tiempos de carga, consumo innecesario de ancho de banda y puede haber un riesgo de inconsistencia de datos al solo procesar como limite 2000 registros.
Una solución es crear colecciones con un rango establecido, en el evento OnVisible de la screen, tecleamos:
//Código 1 (RECOMENDABLE)
ClearCollect(col_Datos, Filter(ListaSharePoint, Folio <= 400));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 401 && Folio <= 800));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 801 && Folio <= 1200));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 1201 && Folio <= 1600));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 1601 && Folio <= 2000));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 2001 && Folio <= 2400));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 2401 && Folio <= 2800));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 2801 && Folio <= 3200));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 3201 && Folio <= 3400));
Collect(col_Datos, Filter(ListaSharePoint, Folio >= 3401 && Folio <= 3800));
Se puede tomar el límite de registros 500, pero prefiero utilizar un límite de 400 registros.
Se podría simplificar con un código más limpio:
//Código 2
Clear(col_Datos);
ForAll(
Sequence(9, 0, 400) As Bloque, //aumentar el 9 en caso de aumentar los registros
With(
{
Inicio: Bloque.Value,
Fin: Bloque.Value + 400
},
Collect(
col_Datos,
Filter(
ListaSharePoint,
Folio > Inicio && Folio <= Fin
)
)
)
);
Nota: el código 1 es mucho más rapido que el código 2 ya que carga la ejecución en paralelo.
Con esto se filtrarán los registros tomando el rango del campo Folio de la lista de SharePoint, el código también se puede copiarse en OnStart para que se ejecute al ingresar a la app.
Agregamos Col_Datos al evento Item del Data Grid.
- Width: Parent.Width
- AlignInContainer: AlignInContainer.Center
- FillPortions: 1
Si ejecutamos la app y vamos al final de la lista se visualizará el registro 3300.
Dentro del container vertical, agregaremos un container horizontal
Dentro del container horizontal, agregaremos un Tab list.
Tambien agregaremos un Text input donde teclearemos alguna palabra a buscar.
Para buscar una palabra en el Data grid, se podría habilitar la opción Searchable, pero no se podrá personalizar el mensaje "Search table".
En el container horizontal cambiaremos:
FillPortions: 0
Height: 60
En el Tab list cambiare los valores que manejo en el campo Status de la lista de SharePoint.
Tambien modificare los siguientes valores en el Tab list.
- Appearance: TabListAppearance.SubtleCircular
- Height: 40
- Width: 400
En el Text input tecleamos en Placeholder el texto que se visualizara.
Ahora modificaremos el contenido del evento Item del Data grid.
Filter(
col_Datos,
(
TabList1.Selected.Value = "Todos" ||
TabList1.Selected.Value in Status // Filtra el 'Status' del tab list
)
&&
(
//Busca en los campos del Data grid
IsBlank(TextInput1.Text) ||
TextInput1.Text in Folio ||
TextInput1.Text in Status ||
TextInput1.Text in Articulo ||
TextInput1.Text in Marca ||
TextInput1.Text in Modelo ||
TextInput1.Text in Serie
)
)
Ejecutamos la app, seleccionamos el Tab list.


















