Le calendrier dessine les rendez-vous, les tâches et ses autres lignes à sa manière : leur heure, sujet, lieu et icône de répétition sur le calendrier, une infobulle indiquant quand et où, et un dialogue des détails d’un rendez-vous. Chacun peut être dessiné à votre façon, un tableau à la fois, et les lignes d’un tableau peuvent être écrites et modifiées sous vos propres formes. Tout cela s’applique à chaque mise en page.
Un MultiTableTemplate (Réagir : une entrée de templates) dessine les lignes d’une table sur le calendrier à la place de toutes les lignes du calendrier — leur icône temps, sujet, lieu et répétition — comme sur une ligne temporelle. Elle reçoit la ligne, avec chaque colonne lue dans sa Record; gardez-la à une ligne, puisque les cellules d’un mois sont courtes. Comme une infobulle, elle montre ce que l’utilisateur doit lire, pas des contrôles à utiliser : le calendrier ouvre toujours la ligne lorsqu’elle est cliquée.
<Calendar
regarding={account}
templates={{
task: (item) => (
<>
<TaskListLtr16Regular /> {item.title}
</>
),
}}
/><Calendar Regarding="@account">
<MultiTableTemplate Table="task" Context="item">
<FluentIcon Value="@(new Icons.Regular.Size16.TaskListLtr())" /> @item.Title
</MultiTableTemplate>
</Calendar>Le calendrier lit les colonnes qu’il affiche lui-même. Pour qu’un modèle ou une infobulle en montre un autre, nomme-le dans le FetchXML d’une vue, comme la démo ci-dessous le fait pour la direction et le numéro d’un appel téléphonique : le calendrier lit les colonnes d’une vue à côté de la sienne.
Reposer le pointeur sur un rendez-vous affiche son sujet, quand et où il se trouve. Passez TooltipTemplate (Réagir : appointmentTooltip) pour afficher une infobulle de votre nom. Il reçoit le rendez-vous, qui Record contient chaque colonne lue de sa ligne, avec sa valeur formatée, afin de pouvoir afficher les colonnes de votre propre génération que le calendrier ne dessine pas. Une infobulle n’est pas interactive : montre ce que l’utilisateur doit lire, pas les contrôles à utiliser.
<Calendar
viewIds={[accountAppointmentsViewId]}
appointmentTooltip={(appointment) => (
<>
<strong>{appointment.subject}</strong>
<div>{appointment.record?.formattedValues?.['ppp_customercode']}</div>
</>
)}
/><Calendar ViewIds="@([accountAppointmentsViewId])">
<TooltipTemplate>
<strong>@context.Subject</strong>
<div>@context.Record?.FormattedValues.GetValueOrDefault("ppp_customercode")</div>
</TooltipTemplate>
</Calendar>Les rendez-vous et appels téléphoniques de Schmeler and Sons, un mois à la fois. Un appel téléphonique est dessiné avec une icône indiquant la direction de la partie, et son infobulle indique le numéro auquel il est allé ou depuis lequel il est allé ou depuis lequel il est allé ; l’infobulle d’un rendez-vous indique où il se trouve.
Cliquer sur un rendez-vous ouvre une boîte de dialogue avec ses détails, lu depuis Dataverse comme une page d’enregistrement lit un enregistrement — via le même accès à la table et la même sécurité de colonne — et affiché en lecture seule : quand il est, où, à quoi il s’agit, son statut et sa description. Passez AppointmentDetails (Réagir : appointmentDetails) pour afficher vos propres champs à la place, liés à l’enregistrement du rendez-vous comme sur une page d’enregistrement, ou gérez OnAppointmentClick (Réagir : onAppointmentClick) pour faire autre chose en un clic, comme ouvrir votre propre page.
<Calendar
appointmentDetails={
<>
<ColumnEdit columnName="scheduledstart" readOnly />
<ColumnEdit columnName="location" readOnly />
</>
}
/><Calendar>
<AppointmentDetails>
<ColumnEdit ColumnName="scheduledstart" ReadOnly="true" />
<ColumnEdit ColumnName="location" ReadOnly="true" />
</AppointmentDetails>
</Calendar>Les rendez-vous de Schmeler and Sons, chaque ouverture à son début, à sa fin, où elle se trouve et ses participants requis.
Dans un Editable calendrier, une ligne d’un tableau autre que les rendez-vous s’ouvre sous forme des colonnes affichées par son enregistrement. A MultiTableForm à l’intérieur du calendrier (Réagir : une entrée de forms) donne une table de vos propres formes, une pour créer ses lignes et une pour les modifier : les composants des éditeurs, affichés à l’intérieur d’une forme de l’enregistrement. FormLocation (Réagir : formLocation) indique où ils s’ouvrent : un dialogue au centre, par défaut, ou un panneau latéral à gauche ou à droite.
<Calendar
regarding={account}
editable
formLocation="right"
forms={{ task: { create: TaskForm, edit: TaskForm } }}
/><Calendar Regarding="@account" Editable="true" FormLocation="DialogLocation.Right">
<MultiTableForm Table="task" CreateForm="typeof(TaskForm)" EditForm="typeof(TaskForm)" />
</Calendar>Pour un exemple plus complet — les tâches dessinées en indiquant s’ils sont terminés et leur urgence, ainsi qu’une infobulle pour chaque table — voir la démo Calendar Custom Rendering.