Navegue hacia y desde una página generativa mediante la API de cliente

En este artículo se proporcionan ejemplos de navegación a páginas generativas en aplicaciones controladas por modelos mediante el método navigateTo de la API de cliente. Aprenda cómo abrir páginas generativas dentro de un cuadro de diálogo o en línea, y cómo pasar parámetros de entrada, como un identificador de registro o datos personalizados.

Nota:

Este método solo se admite en la Interfaz unificada.

Buscar el identificador de página

Cada uno de los ejemplos siguientes requiere el identificador de la página generativa de destino. Para buscar el identificador de página:

  1. Abra la aplicación controlada por modelos que contiene la página generativa en el diseñador de aplicaciones.
  2. Seleccione la página generativa en la lista de páginas.
  3. En el panel de propiedades, copie el GUID que se muestra en el campo Página generativa .

Abrir una página generativa en línea sin parámetros

Abre una página generativa como vista completa sin parámetros de entrada.

var pageInput = {
    pageType: "generative",
    pageId: "<genPageID>"
};
var navigationOptions = {
    target: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
    .then(
        function () {
            // Called when page opens
        }
    ).catch(
        function (error) {
            // Handle error
        }
    );

Abrir una página generativa alineada con el contexto de registro

Pasa un recordId y un entityName a la página de generación para que esta pueda cargar y mostrar un registro específico. La página generativa de destino debe configurarse para aceptar estos parámetros.

var pageInput = {
    pageType: "generative",
    pageId: "<genPageID>",
    entityName: "account",
    recordId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee" // replace with actual record GUID
};
var navigationOptions = {
    target: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
    .then(
        function () {
            // Called when page opens
        }
    ).catch(
        function (error) {
            // Handle error
        }
    );

Abrir una página generativa en línea con datos personalizados

Pasa un data objeto que contiene pares clave-valor personalizados a la página generativa. La página generativa de destino debe configurarse para aceptar estos parámetros.

var pageInput = {
    pageType: "generative",
    pageId: "<genPageID>",
    data: { status: "active", category: "premium" }
};
var navigationOptions = {
    target: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
    .then(
        function () {
            // Called when page opens
        }
    ).catch(
        function (error) {
            // Handle error
        }
    );

Abrir una página generativa como un cuadro de diálogo centrado

Abre una página generativa en un cuadro de diálogo centrado, pasando tanto el contexto de registro como los datos personalizados. Ajuste width y height según sea necesario.

var pageInput = {
    pageType: "generative",
    pageId: "<genPageID>",
    entityName: "account",
    recordId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee", // replace with actual record GUID
    data: { view: "summary" }
};
var navigationOptions = {
    target: 2,
    position: 1,
    width: { value: 70, unit: "%" },
    height: { value: 80, unit: "%" },
    title: "<dialog title>"
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
    .then(
        function () {
            // Called when the dialog closes
        }
    ).catch(
        function (error) {
            // Handle error
        }
    );

Abrir una página generativa como un cuadro de diálogo lateral

Abre una página generativa como un cuadro de diálogo lateral mediante position: 2.

var pageInput = {
    pageType: "generative",
    pageId: "<genPageID>"
};
var navigationOptions = {
    target: 2,
    position: 2,
    width: { value: 500, unit: "px" },
    title: "<dialog title>"
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions)
    .then(
        function () {
            // Called when the dialog closes
        }
    ).catch(
        function (error) {
            // Handle error
        }
    );

No admitido: abrir una página generativa en un panel lateral

Importante

Actualmente no se admite abrir una página generativa mediante Xrm.App.sidePanes.createPane() .

// Not supported — page content doesn't render
const pane = await Xrm.App.sidePanes.createPane({
    title: "My Generative Page",
    paneId: "GenPage",
    canClose: false,
    width: 400
});
pane.navigate({ pageType: "generative", pageId: "<genPageID>" });

Utiliza un cuadro de diálogo centrado o lateral mediante Xrm.Navigation.navigateTo en su lugar.

Al navegar desde dentro de un componente de página generativa, use (window as any).Xrm para acceder al objeto Xrm, ya que el ámbito del componente React no proporciona acceso directo a él.

const xrm = (window as any).Xrm;
xrm.Navigation.navigateTo({
    pageType: "generative",
    pageId: targetPageId,
    entityName: "account",
    recordId: selectedRecordId,
    data: { view: "summary" }
});

Nota:

Al navegar dentro de las aplicaciones basadas en modelos, evite construir direcciones URL directas o manipular window.location.

Puede navegar a una página generativa mediante la construcción de una dirección URL con la estructura siguiente:

https://<your-org>.crm.dynamics.com/main.aspx?appid={app-id}&pagetype=genux&id={page-id}&recordid={recordId}&entityname={entityName}&data={encoded-json}

Debe codificar el parámetro data en formato URL como JSON. Por ejemplo, para pasar un objeto de filtro personalizado:

https://<your-org>.crm.dynamics.com/main.aspx?appid={app-id}&pagetype=genux&id={page-id}&data=%7B%22status%22%3A%22active%22%7D

Debe configurar la página generativa de destino para aceptar estos parámetros.