Operaciones de datos remotas React Grid

    De forma predeterminada, IgrGrid utiliza su propia lógica para realizar operaciones de datos.

    Puede realizar estas tareas de forma remota y enviar los datos resultantes a IgrGrid aprovechando ciertas entradas y eventos, que están expuestos por IgrGrid.

    Scroll infinito

    Un diseño popular para escenarios que requieren recuperar datos por fragmentos desde un punto final es el llamado desplazamiento infinito. Para las cuadrículas de datos, se caracteriza por un aumento continuo de los datos cargados provocado por el desplazamiento del usuario final hasta el final. Los siguientes párrafos explican cómo puede utilizar la API disponible para lograr fácilmente un desplazamiento infinito en IgrGrid.

    Para implementar el desplazamiento infinito, debes recuperar los datos en fragmentos. Los datos que ya se han obtenido deben almacenarse localmente y hay que determinar la longitud de un fragmento y cuántos fragmentos hay. También debe realizar un seguimiento del último índice de fila de datos visible en la cuadrícula. De esta manera, utilizando las propiedades StartIndex y ChunkSize, puede determinar si el usuario se desplaza hacia arriba y debe mostrarle los datos ya obtenidos o si se desplaza hacia abajo y debe obtener más datos desde el punto final.

    Lo primero que hay que hacer es obtener el primer fragmento de los datos. Establecer la propiedad es importante, ya que permite que la totalItemCount cuadrícula ajuste el tamaño correcto de su barra de desplazamiento.

    Además, debe suscribirse a la salida, de modo que pueda proporcionar los datos que necesita la DataPreLoad cuadrícula cuando intenta mostrar un fragmento diferente, en lugar del cargado actualmente. En el controlador de eventos, debe determinar si desea capturar nuevos datos o devolver datos que ya están almacenados en caché localmente.

    Demostración de desplazamiento infinito

    EXAMPLE
    DATA
    TSX
    CSS

    ¿Te gusta este ejemplo? Obtén acceso a nuestro kit de herramientas completo Ignite UI for React y comienza a crear tus propias aplicaciones en minutos. Descárgalo gratis.

    Localización remota

    La función de localización puede funcionar con datos remotos. Para demostrar esto, primero declaremos que nuestro servicio será responsable de la obtención de datos. Necesitaremos el recuento de todos los elementos de datos para poder calcular el recuento de páginas. Esta lógica se agregará a nuestro servicio.

    const CUSTOMERS_URL = `https://data-northwind.indigo.design/Customers/GetCustomersWithPage`;
    
    export class RemoteService {
    
        public static getDataWithPaging(pageIndex?: number, pageSize?: number) {
            return fetch(this.buildUrl(CUSTOMERS_URL, pageIndex, pageSize))
            .then((result) => result.json());
        }
    
        private static buildUrl(baseUrl: string, pageIndex?: number, pageSize?: number) {
            let qS = "";
            if (baseUrl) {
                    qS += `${baseUrl}`;
            }
    
            // Add pageIndex and size to the query string if they are defined
            if (pageIndex !== undefined) {
                qS += `?pageIndex=${pageIndex}`;
                if (pageSize !== undefined) {
                    qS += `&size=${pageSize}`;
                }
            } else if (pageSize !== undefined) {
                qS += `?perPage=${pageSize}`;
            }
    
            return `${qS}`;
        }
    }
    tsx

    Después de declarar el servicio, debemos crear un componente, que será responsable de la construcción y la IgrGrid suscripción de datos.

         <IgrGrid
              ref={grid}
              data={data}
              pagingMode={GridPagingMode.Remote}
              primaryKey="customerId"
              height="600px"
              isLoading={isLoading}
            >
            <IgrPaginator 
              perPage={perPage}
              ref={paginator}
              pageChange={onPageNumberChange}
              perPageChange={onPageSizeChange}>
            </IgrPaginator>
              <IgrColumn field="customerId" hidden={true}></IgrColumn>
              <IgrColumn field="companyName" header="Company Name"></IgrColumn>
              <IgrColumn field="contactName" header="Contact Name"></IgrColumn>
              <IgrColumn field="contactTitle" header="Contact Title"></IgrColumn>
              <IgrColumn field="address.country" header="Country"></IgrColumn>
              <IgrColumn field="address.phone" header="Phone"></IgrColumn>
            </IgrGrid>
    tsx

    A continuación, configure el estado:

      const grid = useRef<IgrGrid>(null);
      const paginator = useRef<IgrPaginator>(null);
      const [data, setData] = useState([]);
      const [page, setPage] = useState(0);
      const [perPage, setPerPage] = useState(15);
      const [isLoading, setIsLoading] = useState(true);
    
      useEffect(() => {
        loadGridData(page, perPage);
      }, [page, perPage]);
    tsx

    y finalmente configure el método para cargar los datos:

      function loadGridData(pageIndex?: number, pageSize?: number) {
        // Set loading state
        setIsLoading(true);
    
        // Fetch data
        RemoteService.getDataWithPaging(pageIndex, pageSize)
          .then((response: CustomersWithPageResponseModel) => {
            setData(response.items);
            // Stop loading when data is retrieved
            setIsLoading(false);
            paginator.current.totalRecords = response.totalRecordsCount;
          })
          .catch((error) => {
            console.error(error.message);
            setData([]);
            // Stop loading even if error occurs. Prevents endless loading
            setIsLoading(false);
          })
      }
    tsx

    Para obtener más información, consulte la muestra completa a continuación:

    Demostración de paginación remota de cuadrícula

    EXAMPLE
    DATA
    TSX
    CSS

    y, por último, configura el comportamiento de las RowIslands:

    Ignite UI for React | CTA Banner

    Problemas conocidos y limitaciones

    • Cuando la grilla no tiene PrimaryKey configurada y los escenarios de datos remotos están habilitados (al paginar, ordenar, filtrar y desplazar solicitudes de activación a un servidor remoto para recuperar los datos que se mostrarán en la grilla), una fila perderá el siguiente estado después de un dato. solicitud completa:
    • Selección de fila
    • Fila Expandir/contraer
    • Edición de filas
    • Fijación de filas

    Referencias de API

    Recursos adicionales

    Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.