Cuenta
Contacto Principal
El LookupRecordContext componente carga y proporciona acceso de edición al registro referenciado por un campo de consulta en el padre RecordContext. Hereda de BaseColumnEdit, por lo que se vincula a una columna mediante el ColumnName parámetro igual que cualquier otro editor.
Cuando colocas a LookupRecordContext dentro de a RecordContext y especificas a ColumnName que se mapea a un campo de búsqueda, el componente lee automáticamente el valor de consulta del registro padre, recupera el registro referenciado de Dataverse y lo expone como un archivo anidado RecordContext. Cualquier editor colocado dentro de la LookupRecordContext vinculación a los campos del registro consultado.
El ColumnName parámetro debe referirse a una columna de consulta en el registro padre. El componente utiliza esto para resolver la tabla objetivo y el ID del registro.
{/* Las ediciones <LookupRecordContext> internas vinculan a columnas en el</LookupRecordContext>
Tabla del registro LOOKED-UP — el contacto vinculado, no la cuenta. */}
<RecordContext table="account" queryParameterName="id">
<LookupRecordContext columnName="primarycontactid">
<TextEdit columnName="firstname" />
<TextEdit columnName="lastname" />
<TextEdit columnName="emailaddress1" />
</LookupRecordContext>
</RecordContext><RecordContext TableName="account" QueryParameterName="id">
<LookupRecordContext ColumnName="primarycontactid">
<ColumnEdit ColumnName="firstname" />
<ColumnEdit ColumnName="lastname" />
<ColumnEdit ColumnName="emailaddress1" />
</LookupRecordContext>
</RecordContext>Por ejemplo RecordContext, puedes usar el ContextTemplate parámetro en lugar de ChildContent acceder directamente al objeto buscado TableRecord en tu marcado.
{/* React no <ContextTemplate> tiene — lee el registro de LOOKED-UP</ContextTemplate>
dentro de un componente hijo mediante 'useRecordContext' (la consulta genera su
RecordContext anidado propio, así que este gancho devuelve el contacto, no el
cuenta). */}
function PrimaryContactHeading() {
const { record } = useRecordContext();
const first = String(record?.['firstname']?.value ?? '');
const last = String(record?.['lastname']?.value ?? '');
return <h3>Contacto Principal: {first} {last}</h3>;
}
<RecordContext table="account" queryParameterName="id">
<LookupRecordContext columnName="primarycontactid">
<PrimaryContactHeading />
<TextEdit columnName="emailaddress1" />
</LookupRecordContext>
</RecordContext><RecordContext TableName="account" QueryParameterName="id">
<LookupRecordContext ColumnName="primarycontactid">
<ContextTemplate>
<h3>Contacto Principal: @context["firstname"] @context["lastname"]</h3>
<ColumnEdit ColumnName="emailaddress1" />
</ContextTemplate>
</LookupRecordContext>
</RecordContext>Los cambios realizados en los campos dentro de a LookupRecordContext se guardan como parte de la operación de guardado principal MainContext . La OnBeforeSave callback puede usarse para ejecutar lógica personalizada o cancelar la partida guardada.
function MyPage() {
const onBeforeSave = async () => {
// Lógica personalizada antes de guardar el registro consultado.
// Lanza para cancelar la partida guardada.
};
return (
<MainContext>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
<RecordContext table="account" queryParameterName="id">
<TextEdit columnName="name" />
<LookupRecordContext
columnName="primarycontactid"
onBeforeSave={onBeforeSave}
>
<TextEdit columnName="firstname" />
<TextEdit columnName="lastname" />
</LookupRecordContext>
</RecordContext>
</MainContext>
);
}<MainContext>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
<RecordContext TableName="account" QueryParameterName="id">
<ColumnEdit ColumnName="name" />
<LookupRecordContext ColumnName="primarycontactid"
OnBeforeSave="OnBeforeSave">
<ColumnEdit ColumnName="firstname" />
<ColumnEdit ColumnName="lastname" />
</LookupRecordContext>
</RecordContext>
</MainContext>
@code {
private async Task OnBeforeSave(CancelEventArgs eventArgs)
{
// Lógica personalizada antes de guardar el registro consultado
}
}La RecordContext propiedad proporciona acceso al interior RecordContext para operaciones programáticas como refrescar o comprobar el estado sucio.
{/* No hay referencia exterior — el modismo React es un hijo que dice
el contexto anidado mediante 'useRecordContext' y expone lo que necesite
(aquí, un botón de actualización). El gancho devuelve el disco LOOKED-UP
Contexto, así que 'refresh()' recarga el contacto, no la cuenta principal. */}
function RefreshContactButton() {
const { refresh } = useRecordContext();
return <button onClick={() => refresh()}>Actualizar contacto</button>;
}
<LookupRecordContext columnName="primarycontactid">
<RefreshContactButton />
<TextEdit columnName="firstname" />
</LookupRecordContext><LookupRecordContext @ref="_lookupContext" ColumnName="primarycontactid">
<ColumnEdit ColumnName="firstname" />
</LookupRecordContext>
@code {
private LookupRecordContext _lookupContext;
private async Task RefreshContact()
{
await _lookupContext.RecordContext.RefreshAsync();
}
}El siguiente ejemplo muestra un formulario de cuenta que muestra los datos del contacto principal en línea usando un LookupRecordContext límite al primarycontactid campo de búsqueda.
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
ChildContent | RenderFragment? | Contenido hijo del componente | |
ColumnName* | string | Nombre lógico de columna para vincular el editor desde el registro de la tabla. | |
ContextTemplate | RenderFragment<TableRecord> | Renderizar el fragmento que recibe el registro cargado para su visualización o edición. | |
Description | string? | La descripción se mostrará en la descripción emergente. | |
Disabled | bool? | ¿Debería desactivar el editor? | |
DisplayLabelWhenAvailable | bool | True | Especifica si mostrar una lable si está disponible. |
DisplayTooltipWhenAvailable | bool | True | Especifica si mostrar una descripción emergente si está disponible. |
DisplayValidationErrorMessage | bool | True | ¿Debe mostrarse un mensaje de error de validación cuando el componente falla en la validación? |
IsVisible | bool | True | ¿El editor es visible? |
Label | string? | El texto se mostrará como etiqueta para el editor. | |
ReadOnly | bool? | ¿Debería el editor ser solo lectura? | |
RecordContext | RecordContext | Proporciona acceso al interior LookupRecordContext.RecordContext para operaciones programáticas. | |
Required | bool? | Si el valor es necesario. | |
Value | LookupValue? | El valor actual de consulta (referencia) gestionado por este contexto. |
ChildContentColumnName*ContextTemplateDescriptionDisabledDisplayLabelWhenAvailableDisplayTooltipWhenAvailableDisplayValidationErrorMessageIsVisibleLabelReadOnlyRecordContextLookupRecordContext.RecordContext para operaciones programáticas.RequiredValueNombre | Tipo | Descripción |
|---|---|---|
OnBeforeSave | EventCallback<CancelEventArgs> | Llamó la llamada antes de guardar. Permite cancelar la operación de guardado. |
ValueChanged | EventCallback<ColumnValueBase> | Recibe o establece una callback que actualiza el valor vinculado. |
OnBeforeSaveValueChangedNombre | Parámetros | Tipo | Descripción |
|---|---|---|---|
GetValidationErrors | List<string> | Devuelve una colección de los errores de validación actuales. |
GetValidationErrors