Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les ressources RCDC (Resource Control Display Configuration) sont des ressources définies par l’utilisateur que vous pouvez utiliser pour contrôler la façon dont d’autres ressources dans le magasin de données Microsoft Identity Manager 2016 SP1 (MIM) apparaissent dans l’interface utilisateur (IU) de l’utilisateur final. Chaque ressource RCDC contient un fichier de configuration XML que vous pouvez modifier pour ajouter, modifier ou supprimer du texte d’interface utilisateur et des contrôles d’interface utilisateur. Bien que MIM 2016 SP1 fournit plusieurs ressources RCDC par défaut, vous pouvez également créer des ressources RCDC personnalisées pour des ressources personnalisées. Pour plus d’informations sur l’utilisation de l’interface utilisateur RCDC dans le portail FIM, consultez Présentation de la configuration et de la personnalisation du portail FIM dans la documentation FIM.
Problèmes connus
La valeur par défaut dans de nombreux contrôles RCDC n’est pas prise en charge.
Dans cette version, la définition des valeurs par défaut dans les contrôles d’un contrôle de ressource n’est pas prise en charge, à l’exception du contrôle de bouton d’option. Vous pouvez contourner ce problème pour une zone de liste déroulante en spécifiant une valeur par défaut qui n’est associée à aucune valeur pour forcer l’utilisateur à modifier la sélection. Pour contourner ce problème avec d’autres contrôles, vous devez utiliser un flux de travail d’autorisation pour fournir une valeur par défaut lors de l’envoi de la demande.
Structure de base
Les données XML d’une ressource RCDC se composent d’un élément XML ObjectControlConfiguration unique.
Remarque
Pour connaître le schéma XSD complet, consultez l’annexe A : schéma XSD par défaut.
Voici le schéma XSD de l’élément ObjectControlConfiguration :
<xsd:element name="ObjectControlConfiguration"\>
<xsd:complexType\>
<xsd:sequence\>
<xsd:element ref="my:ObjectDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:XmlDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:Panel"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:TypeName"/>
<xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
</xsd:complexType>
</xsd:element>
L’élément ObjectControlConfiguration contient les éléments suivants :
ObjectDataSource: cet élément spécifie le TypeName d’une classe de source de données utilisée par le contrôle de ressources (RC). Pour obtenir une description et la définition de schéma, consultez la section sources de données suivante dans ce document. Un élément ObjectControlConfiguration peut contenir jusqu’à 32 nœuds de l’élément ObjectDataSource.
XmlDataSource: il s’agit d’une source de données simple qui est la plus couramment utilisée pour spécifier la conception d’une page récapitulative. Pour obtenir une description et la définition de schéma, consultez la section sources de données suivante dans ce document. Un ObjectControlConfiguration: l’élément peut contenir jusqu’à 32 nœuds de l’élément XmlDataSource.
panneau: l’administrateur peut personnaliser la disposition de la page RCDC en modifiant des éléments à l’intérieur des éléments du panneau. Pour plus d’informations, consultez la section Panneau plus loin dans ce document. Un élément ObjectControlConfiguration ne doit avoir qu’un seul élément Panel.
Événements: les administrateurs ne peuvent pas fournir de code personnalisé derrière, cette fonctionnalité est limitée. Il s’agit de l’événement qu’un panneau ou un contrôle peut émettre, en fonction d’une modification d’état. Pour plus d’informations, consultez la section Événements plus loin dans ce document. Un élément ObjectControlConfiguration peut contenir éventuellement un élément Event. En général, l’utilisation d’événements de personnalisés n’est pas prise en charge, sauf si elle est spécifiquement développée dans les améliorations ultérieures.
Sources de données
Microsoft Identity Manager utilise des sources de données pour lier des données aux composants de l’interface utilisateur. Cela permet de faciliter la séparation des données de la couche de présentation. Il existe deux types de sources de données dans les données de configuration des ressources RCDC : ObjectDataSource et XmlDataSource.
ObjectDataSources spécifier une classe Microsoft .NET qui fournit les données au RC. Il existe un ensemble fixe de types disponibles d’ObjectDataSources, à condition que l’administrateur puisse choisir de consommer lors de la création de RCDCs.
XMLDataSources offrent un moyen simple de structurer des données XML et peuvent être utilisées par les administrateurs pour fournir des données personnalisées. Les données XML doivent être spécifiées directement dans le RCDC, sauf si vous utilisez la structure XML prédéfinie intégrée. La structure XML intégrée est utilisée pour générer des pages récapitulatives dans la rc.
Dans rcDC, vous pouvez lier ces sources de données à des attributs des contrôles d’interface utilisateur spécifiés dans rcDC pour générer l’interface utilisateur.
Éléments ObjectDataSource
Microsoft Identity Manager fournit les types de sources de données courants dans le tableau suivant qui sont disponibles pour tous les types de ressources (sauf indication contraire).
TypeName | Description | Liaison bidirectionnelle | Syntaxe de liaison |
---|---|---|---|
PrimaryResourceObjectDataSource | Cela représente la ressource FIM 2010 en cours de création, de modification ou d’affichage. Le chemin d’accès dans la chaîne de liaison est le nom de l’attribut. Le type de ressource est spécifié par l’attribut TargetObjectType du RCDC plutôt que dans le RCDC. Attribut ConfigurationData. | Oui |
[AttributeName] valeur de l’attribut objet donné par son nom. |
PrimaryResourceDeltaDataSource | Cette source de données génère le code XML delta qui compare l’état d’origine et l’état actuel de la ressource FIM 2010. Le code XML delta généré est consommé par le contrôle récapitulative RC pour afficher l’interface utilisateur pour la demande que l’utilisateur envoie. | Non |
DeltaXml Ceci est utilisé avec le contrôle de synthèse pour afficher le delta. |
PrimaryResourceRightsDataSource | Cette source de données fournit les droits inline pour chaque attribut de la ressource FIM 2010. Cela permet à la RC de déterminer à l’avance les autorisations dont l’utilisateur dispose sur cet attribut, puis d’afficher l’interface utilisateur pour cet attribut de manière appropriée. | Non | [AttributeName] |
SchemaDataSource | Cette source de données peut être utilisée pour accéder aux informations relatives au schéma, telles que le nom d’affichage, la description, si l’attribut est requis ou non, ainsi que les informations de type de ressource. | Non |
[AttributeName].Required valeur booléenne indiquant si l’attribut doit avoir une valeur valide. [AttributeName].DisplayNameString Valeur indiquant le nom d’affichage de la liaison. [AttributeName].DescriptionString Valeur indiquant la description de la liaison. [AttributeName].StringRegexString valeur qui indique l’expression régulière de chaîne d’une liaison. [AttributeName].DisplayName [AttributeName].Description [AttributeName].IntegerValueMinimum [AttributeName].IntegerValueMaximum [AttributeName].LocalizedAllowedValues |
DomainDataSource | Cette source de données fournit une énumération de domaines, en fonction des ressources de configuration de domaine. Cette source de données ne peut être utilisée que dans les CONTRÔLEURS de domaine qui concernent les ressources de groupe et les ressources utilisateur. | Oui | Domaine |
Voici un exemple d’extrait de code RCDC qui lie trois sources de données au contrôle UocTextBox pour modifier l’attribut Description d’un groupe :
<my:ObjectDataSource my:TypeName="PrimaryResourceObjectDataSource" my:Name="object" my:Parameters=""/>
<my:ObjectDataSource my:TypeName="SchemaDataSource" my:Name="schema"/>
<my:ObjectDataSource my:TypeName="PrimaryResourceRightsDataSource" my:Name="rights"/>
<my:Control my:Name="Description" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Description.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Description}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
<my:Property my:Name="Rows" my:Value="3"/>
<my:Property my:Name="Columns" my:Value="60"/>
<my:Property my:Name="MaxLength" my:Value="450"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=Description, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
Élément XMLDataSource
À l’aide d’un élément XMLDataSource, vous pouvez spécifier des données personnalisées que le RCDC peut consommer pour une ressource donnée. Dans ce cas, les données XML doivent être spécifiées dans le RCDC. En guise d’alternative, cette source de données peut être utilisée pour référencer une structure de données XML intégrée pour afficher l’interface utilisateur pour les pages récapitulatives. Vous contrôlez le type de XMLDataSource à utiliser lorsque vous le définissez dans le RCDC.
TypeName | Description | Liaison bidirectionnelle | Syntaxe de liaison |
---|---|---|---|
xmlDataSource | La source de données représente les données XML. Les données peuvent être au format XSL ou XSL incorporé :
|
Non |
Xpath[;namespaces] où Xpath est un xpath XML valide pour sélectionner la note requise, le plus souvent « / » (racine).
namespaces est une liste facultative de chaînes prefix=URI. La chaîne est délimitée par des points-virgules comme requis pour que le chemin X fonctionne sur le code XML espace de noms. |
ReferenceDeltaDataSource | La source de données représente des deltas d’attributs de référence à valeurs multiples. Il est utilisé uniquement sur RCDC pour le groupe et l’ensemble. Bien que la source de données ne soit pas limitée aux groupes ou aux jeux, elle nécessite des modifications de code dans l’hôte RCDC pour envoyer ces deltas. Actuellement, les groupes et les ensembles sont les seuls hôtes qui reconnaissent cette source de données. |
Oui |
[AttributeName].Add où [AttributeName] représente un attribut de référence et les données retournées sont les ajouts delta.
[AttributeName].Remove où [AttributeName] représente un attribut de référence et les données retournées sont les suppressions delta. DeltaXml |
RequestDetailsDataSource | La source de données représente l’attribut RequestParameter des objets Request. Le paramètre définit le nombre maximal de valeurs d’attribut à afficher par attribut à valeurs multiples. Il est utilisé uniquement dans RCDC pour demande. <my:ObjectDataSource my:TypeName="RequestDetailsDataSource" my:Name="requestDetails" my:Parameters="1000" /> |
Non | DeltaXml |
RequestStatusDataSource | La source de données représente l’attribut RequestStatusDetails des objets Request. Il est utilisé uniquement dans RCDC pour demande. | Non | DeltaXml |
Pour définir une source de données XML personnalisée, utilisez le code XML suivant :
<my:XmlDataSource my:Name="MyCustomData" >
%Insert custom, properly formatted XML data here%
</my:XmlDataSource>
Pour utiliser le contrôle de synthèse intégré XSL, définissez la source de données comme suit :
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />
Si vous créez un RCDC pour un type de ressource personnalisé, vous pouvez utiliser cette méthode pour afficher automatiquement une page récapitulative pour cette ressource personnalisée.
Voici un exemple de création d’un onglet résumé dans le RCDC à l’aide de l’élément PrimaryResourceDeltaDataSource avec l’élément XMLDataSource à l’aide du XSL intégré :
<my:ObjectDataSource my:TypeName="PrimaryResourceDeltaDataSource" my:Name="delta" />
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />
<my:Grouping my:Name="summaryGroup" my:Caption="Summary” my:IsSummary="true">
<my:Control my:Name="summaryControl" my:TypeName="UocHtmlSummary" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ModificationsXml" my:Value="{Binding Source=delta, Path=DeltaXml}" />
<my:Property my:Name="TransformXsl" my:Value="{Binding Source=summaryTransformXsl, Path=/}" />
</my:Properties>
</my:Control>
</my:Grouping>
En guise d’alternative, l’utilisateur peut remplacer l’élément XmlDataSource spécifié précédemment par le format suivant pour définir une disposition personnalisée d’une page récapitulative. En guise de référence, le XSL de synthèse FIM 2010 par défaut est inclus dans l’annexe B : Résumé par défaut XSL, plus loin dans ce document.
<my:XmlDataSource my:Name="summaryTransformXsl">
Insert valid XSL code here
</my:XmlDataSource>
Schéma pour les sources de données
Le schéma XSD suivant génère les deux types de sources de données :
<xsd:element name="ObjectDataSource">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XmlDataSource">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
Élément d'événement
Un élément Event définit l’état changeant d’un contrôle. L’extensibilité de cette fonctionnalité est limitée, car vous ne pouvez pas écrire une fonction personnalisée (gestionnaire) pour définir le comportement après le déclenchement d’un événement. Le même élément Event peut être utilisé dans l’élément Panel. Pour plus d’informations, consultez la section Panneau plus loin dans ce document.
Voici le schéma XSD de l’élément Event :
<xsd:element name="Events">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Event" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Event">
xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Handler"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Un Event est un élément vide et possède les attributs suivants :
Nom: il s’agit du nom unique d’un événement. Le seul événement pris en charge dans le ObjectControlConfiguration est l’événement Load. Cet événement est déclenché lorsque la page est chargée pour la première fois.
gestionnaire: il s’agit du nom unique d’un gestionnaire. Lorsque l’événement est déclenché, généralement une méthode de programme est appelée pour gérer la modification de l’état du contrôle. Les cas suivants ne sont pas pris en charge :
- Suppression d’un gestionnaire existant d’un contrôle existant.
- Création d’un gestionnaire.
- Attachement d’un gestionnaire à un contrôle existant ou nouveau.
Voici un exemple d’élément Events :
<my:Events>
<my:Event my:Name="Load" my:Handler="OnLoad"/>
</my:Events>
Élément Panel
L’élément Panel est l’élément principal d’une disposition RCDC. Voici le schéma XSD pour l’élément Panel :
<xsd:element name="Panel">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Grouping" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:DisplayAsWizard"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:AutoValidate"/>
</xsd:complexType>
</xsd:element>
L’élément Panel contient un élément périodique, de regroupement. Pour plus d’informations, consultez la section Regroupement de ce document.
L’élément Panel a les attributs suivants :
Nom: nom du panneau. Il s’agit d’un attribut de type chaîne obligatoire.
DisplayAsWizard: cet attribut est actuellement déconseillé. L’attribut VerbContext correspondant sur le RCDC détermine si la disposition des ressources est en mode Assistant ou en mode Tab. S’il est défini sur 0 (mode Créer), il est également en mode Assistant. Sinon, il est en mode Tab. Pour plus d’informations, consultez Présentation de la configuration et de la personnalisation du portail FIM dans la documentation.
légende: cet attribut est actuellement déconseillé. L’utilisateur peut spécifier des légendes pour une page en incluant un groupe qui contient uniquement des informations d’en-tête. Pour plus d’informations, consultez la section Regroupement de ce document.
autoValidate: il s’agit d’un attribut booléen facultatif. Lorsqu’elle est définie sur la validation true, elle est déclenchée par rapport à chaque contrôle de l’onglet actif. Par défaut, si l’attribut est manquant, il est défini sur true. Elle peut être utilisée en combinaison avec la propriété RegularExpression. Pour plus d’informations, consultez « RegularExpression » dans une section ultérieure de ce document.
Élément de regroupement
L’élément regroupement définit la disposition globale d’un panneau. Il agit en tant que conteneur qui regroupe des contrôles individuels dans différentes sections et onglets. Voici le schéma XSD pour l’élément Grouping :
<xsd:element name="Grouping">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Control" minOccurs="1" maxOccurs="256"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:IsHeader"/>
<xsd:attribute ref="my:IsSummary"/>
</xsd:complexType>
</xsd:element>
Il existe trois types d’élément Grouping :
regroupement d’en-têtes: un regroupement d’en-têtes est facultatif. Il ne peut y avoir qu’un seul regroupement d’en-têtes dans un panneau . Un regroupement d’en-têtes s’affiche en haut d’un panneau sous forme de légende. Un seul UocCaptionControl peut être utilisé dans ce regroupement. Pour obtenir un exemple de regroupement d’en-têtes, consultez la section Exemple.
de regroupement de contenu : au moins un regroupement de contenu est requis. Il peut y avoir plusieurs regroupements de contenu dans un panneau. Un regroupement de contenu apparaît comme contenu principal d’une page RCDC. Chaque regroupement de contenu apparaît sous la forme d’un onglet dans le même panneau et peut contenir de 1 à 256 contrôles. Consultez la section Exemples pour obtenir un exemple de regroupement de contenu .
regroupement de résumés: un regroupement de résumés est facultatif. Il ne peut y avoir qu’un seul regroupement de résumés dans un panneau. Un regroupement de résumés s’affiche sous la forme du dernier onglet d’un panneau. Un seul contrôle UocHtmlSummary peut être utilisé dans un regroupement de résumés pour afficher les modifications apportées par l’utilisateur avant d’envoyer une demande. Consultez la section Exemples pour obtenir un exemple de regroupement de résumés.
Chaque type de regroupement contient les éléments suivants :
Aide: cet élément fournit du texte d’aide dans un onglet. Vous pouvez également l’utiliser pour ajouter un lien à un fichier d’aide pour l’onglet.
Controls: pour plus d’informations sur cet élément, consultez la section Control de ce document. Chaque regroupement doit avoir 1 à 256 contrôles inclus, en fonction du type du regroupement.
Events: pour plus d’informations sur cet élément, consultez la section Événements de ce document. Chaque regroupement peut, en tant qu’option, avoir un événement. Les événements pris en charge dans un élément Grouping sont les suivants :
- BeforeLeave: cet événement est déclenché lorsque l’utilisateur est prêt à laisser un onglet dans un regroupement de contenu.
- AfterEnter: cet événement est déclenché lorsque l’utilisateur est prêt à entrer un onglet dans un regroupement de contenu.
Un regroupement peut contenir les sept attributs suivants :
Nom: il s’agit du nom requis du regroupement. Le nom doit être unique dans le du panneau.
légende: le légende apparaît comme légende d’en-tête dans un regroupement d’en-têtes. Il apparaît sous forme de légende d’onglet d’un regroupement Contenu ou Résumé.
Description: attribut de chaîne facultatif, Description est fonctionnel uniquement lorsqu’il est utilisé dans un regroupement de contenu. Utilisez cet élément pour donner à l’utilisateur final des détails sur les informations contenues dans le même onglet.
Remarque
Si cet attribut est utilisé dans un regroupement de résumés, le code XML est considéré comme non valide. Si cet attribut est utilisé dans un regroupement d’en-têtes, le code XML est considéré comme valide mais ignoré.
Activé: attribut booléen facultatif, Activé est défini sur true lorsqu’il est manquant. Si activé est défini sur false, l’utilisateur final voit un onglet Désactivé. Cet attribut est fonctionnel uniquement dans un regroupement de contenu.
Remarque
Si cet attribut est utilisé dans un regroupement de résumés, le code XML est considéré comme non valide. Si cet attribut est utilisé dans un regroupement d’en-têtes, le code XML est considéré comme valide mais ignoré.
visible : vous pouvez masquer un onglet de page RCDC ou son en-tête en définissant cet attribut sur false. Par défaut, cet attribut de type booléen facultatif a la valeur true. Cet attribut est fonctionnel uniquement sur un regroupement de contenu.
Remarque
Lorsqu’il n’existe qu’un seul regroupement de contenu dans un panneau, cette fonctionnalité ne fonctionne pas. Lorsqu’il existe plusieurs regroupements de contenu dans un panneau, il se comporte comme décrit précédemment.
IsHeader: cet attribut est un attribut booléen facultatif qui définit si le regroupement est un regroupement d’en-têtes. Si cet attribut n’est pas spécifié, il est défini sur false.
IsSummary: il s’agit d’un attribut booléen facultatif qui définit si le regroupement est un regroupement de résumés. Si cet attribut n’est pas spécifié, il est défini sur false.
Exemples pour les types d’éléments de regroupement
Cette section contient des exemples pour l’élément Groupings.
Exemple : Regroupement d’en-têtes
La figure suivante illustre un exemple de regroupement d’en-têtes :
Le code XML suivant génère un exemple de regroupement d’en-têtes. Dans le code XML, le regroupement d’en-têtes est la zone avec le texte de légende « Exemple de regroupement d’en-têtes ».
<!--Sample for a Header Grouping-->
<my:Grouping my:Name="HeaderGroupingSample" my:IsHeader="true">
<my:Control my:Name="SampleHeaderCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Sample Header Grouping">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="32"/>
<my:Property my:Name="MaxWidth" my:Value="32"/>
</my:Properties>
</my:Control>
</my:Grouping>
<!--End of Header Grouping Sample-->
Exemple : Regroupement de contenu
La figure suivante illustre un exemple de regroupement de contenu :
de regroupement de contenu
Le code XML suivant génère un exemple de regroupement de contenu. Dans le code XML, le regroupement de contenu est la zone avec le texte de légende « Exemple de regroupement de contenu ».
<!--Sample for a Content Grouping-->
<my:Grouping my:Name="ContentGroupingSample" my:Caption="Sample Content Grouping" my:Description="Some description for content grouping">
<my:Control my:Name="DisplayName" my:TypeName="UocTextBox" my:Caption="Display name" my:Description="This is the display name of the set.">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="MaxLength" my:Value="128"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
</my:Grouping>
<!--End of Content Grouping Sample-->
Exemple : Regroupement de résumés
La figure suivante illustre un exemple de regroupement de résumés :
de regroupement de résumés
Le code XML suivant génère un exemple de regroupement de résumés. Dans le code XML, le regroupement de résumés est la zone avec le texte de légende « Exemple de regroupement de résumés ».
<!--Sample for a Summary Grouping-->
<my:Grouping my:Name="Summary" my:Caption="Sample Summary Grouping" my:IsSummary="true">
<my:Control my:Name="SummaryControl" my:TypeName="UocHtmlSummary" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ModificationsXml" my:Value="{Binding Source=delta, Path=DeltaXml}"/>
<my:Property my:Name="TransformXsl" my:Value="{Binding Source=summaryTransformXsl, Path=/}"/>
</my:Properties>
</my:Control>
</my:Grouping>
<!--End of Summary Grouping Sample-->
Élément Help
L’élément Help peut être inclus dans un regroupement ou un élément Control en tant qu’élément facultatif. S’il est utilisé dans un regroupement, il doit s’agir du premier élément utilisé. Il fournit de l’aide textuelle aux utilisateurs finaux pour les aider à fournir des informations précises. Le schéma XSD suivant concerne l’élément Help :
<xsd:element name="Help">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:HelpText"/>
<xsd:attribute ref="my:Link"/>
</xsd:complexType>
</xsd:element>
L’exemple de code XML suivant génère un élément d’aide :
<my:Help my:HelpText="Some Help Text for Group Basic Info" my:Link="03e258a0-609b-44f4-8417-4defdb6cb5e9.htm#bkmk_grouping_GroupingBasicInfo" />
Élément Control
Un élément Grouping contient un ou plusieurs éléments Control. Les contrôles sont les principaux éléments d’un RCDC. Vous pouvez personnaliser l’élément Grouping en définissant les différents éléments Control qu’il contient. Le schéma XSD suivant concerne l’élément Control :
<xsd:element name="Control">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:CustomProperties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Options" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Buttons" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Properties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:ExpandArea"/>
<xsd:attribute ref="my:Hint"/>
<xsd:attribute ref="my:AutoPostback"/>
<xsd:attribute ref="my:RightsLevel"/>
</xsd:complexType>
</xsd:element>
Un élément Control contient les éléments suivants :
Aide: cet élément est ignoré. Il fonctionne uniquement dans le regroupement.
CustomProperties: cet élément n’est pas pris en charge.
Options: cet élément est utilisé uniquement en combinaison avec les contrôles UocDropDownList ou UocRadioButtonList. Elle ne fonctionne pas avec d’autres contrôles. Consultez la section Options de ce document pour connaître la structure de cet élément. Consultez la section Contrôles individuels de ce document pour voir comment les options sont utilisées par un contrôle.
Buttons: cet élément est utilisé uniquement en combinaison avec le contrôle UocListView. Il n’est pas fonctionnel pour d’autres contrôles. Pour plus d’informations, consultez la section UocListView dans ce document.
Propriétés: cet élément est utilisé dans tous les contrôles pour spécifier des comportements supplémentaires d’un contrôle. Pour plus d’informations sur cet élément, consultez la section Propriétés de ce document.
Events: pour la structure de cet élément, consultez la section Événements plus haut dans ce document. Consultez la section Contrôles individuels de ce document pour voir quels événements sont utilisés dans un contrôle.
Un élément Control peut contenir les 10 attributs suivants :
Nom: il s’agit du nom du contrôle. Le nom d’un contrôle doit être unique dans chaque panneau. Il s’agit d’un attribut de type chaîne obligatoire.
TypeName: cet attribut spécifie le type de contrôle qu’il contient. Il s’agit d’un attribut de type chaîne obligatoire. Consultez la section Contrôles individuels de ce document pour chaque nom de contrôle.
légende: vous pouvez utiliser cet attribut pour inclure une légende pour le contrôle. La légende est généralement le nom complet des données affichées ou saisies par le contrôle. Vous pouvez spécifier explicitement une valeur pour la légende ou la lier à des informations de nom complet d’attribut de schéma. La légende apparaît sur le côté gauche d’un contrôle de taille normale. Si un contrôle couvre l’écran complet, la légende apparaît sur le contrôle. Il s’agit d’un attribut facultatif de type chaîne. Pour plus d’informations sur la liaison d’une source de données avec un attribut ou une valeur de propriété, consultez la section Propriétés.
L’exemple suivant montre comment une légende peut être utilisée explicitement :
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias">…<my:Control/>
L’exemple suivant montre comment utiliser une légende avec une source de données. Si vous avez utilisé le modèle pour une source de données illustrée précédemment dans ce document, votre source de données est le schéma. Nous vous recommandons de lier DisplayName de l’attribut à un attribut Caption.
<my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}">…<my:Control/>
activé: il s’agit d’un attribut de type booléen facultatif. En définissant cette valeur d’attribut sur false, l’utilisateur peut désactiver un contrôle. La valeur par défaut est définie sur true.
visible : il s’agit d’un attribut de type booléen facultatif. Vous pouvez utiliser cet attribut pour masquer l’ensemble du contrôle. La valeur par défaut est définie sur true.
Description: utilisez cet attribut de type chaîne facultatif pour inclure une description pour aider l’utilisateur final à comprendre ce qu’il doit placer dans le contrôle ou ce que fait le contrôle. Vous pouvez spécifier explicitement une valeur pour la description ou la lier aux informations de description de l’attribut de schéma.
La description apparaît sur le côté gauche d’un contrôle de taille normale sous la légende. Si un contrôle couvre l’écran complet, la description apparaît en haut du contrôle sous la légende. Pour plus d’informations sur la liaison d’une source de données avec un attribut ou une valeur de propriété, consultez la section Propriétés de ce document.
L’exemple suivant montre comment une description peut être utilisée explicitement :
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias" my:Description="This is explicit description.">…<my:Control/>
Cet exemple montre comment utiliser une description avec une source de données. Si vous avez utilisé le modèle pour une source de données illustrée précédemment dans ce document, votre source de données est schéma. Nous vous recommandons de lier l'Description de l’attribut avec un attribut Description.
<my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=Alias.Description, Mode=OneWay}">…<my:Control/>
ExpandArea: cet attribut indique si le contrôle s’étend sur l’écran plein. Il s’agit d’un attribut de type booléen facultatif. La valeur par défaut est définie sur false.
Remarque
Les attributs Caption et Description sont désactivés lorsque cet attribut a la valeur true. Utilisez le contrôle UocLabel pour fournir une légende pour un contrôle développé.
indicateur: il s’agit d’un attribut facultatif de type chaîne. Le texte de l’attribut Hint aide l’utilisateur final à déterminer ce qui est une entrée valide pour le contrôle. L’indicateur apparaît sous le contrôle.
autopostback: il s’agit d’un attribut de type booléen facultatif. La valeur par défaut est false. Si la valeur est false, l’actualisation de la page peut ne pas actualiser le contrôle. Pour plus d’informations sur AutoPostback, recherchez la propriété de contrôle d’interface utilisateur microsoft ASP.NET du même nom.
RightsLevel: il s’agit d’un attribut facultatif de type chaîne. Vous pouvez lier cet attribut uniquement avec des droits inline avec une source de données. Le contrôle est activé ou désactivé dynamiquement, en fonction des droits de l’utilisateur. Pour plus d’informations sur la liaison de sources de données avec un attribut ou une valeur de propriété, consultez la section Propriétés de ce document.
Cet exemple montre comment un attribut RightsLevel peut être utilisé avec une source de données. Si vous avez utilisé le modèle pour une source de données illustrée précédemment dans ce document, votre source de données est droits. Utilisez le nom de l’attribut comme chemin d’accès.
Élément de propriété
Vous pouvez utiliser un élément Property pour personnaliser davantage le comportement de chaque contrôle. Une propriété est un élément vide. Le schéma XSD suivant concerne l’élément Property :
<xsd:element name="Properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Property" minOccurs="1" maxOccurs="32"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Property">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Value"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Chaque propriété a les deux attributs requis suivants :
Nom: cet attribut de type chaîne est le nom unique de la propriété. Différents contrôles ont des propriétés différentes. Il existe certaines propriétés courantes qui peuvent être utilisées par tous les contrôles. Pour plus d’informations sur les noms disponibles pour un contrôle donné, consultez les sections Propriétés communes et contrôles individuels de ce document.
Valeur: il s’agit de la valeur de la propriété. Type de données de la valeur dépendante de la propriété à laquelle elle est affectée. Consultez la section suivante pour connaître le format de valeur autorisé pour des propriétés spécifiques.
Lier la propriété avec le contenu de la source de données
Certaines propriétés peuvent être liées à des informations provenant d’une source de données. Utilisez le format de chaîne suivant pour effectuer cette liaison. Consultez la description des propriétés individuelles dans la section Contrôles individuels de ce document pour savoir comment lier des propriétés à une source de données.
<my:Property my:Name="Required" my:Value="[Formatted String]"/>
Formatted String := “{Binding “ + [SourceExpression] + “,” + [PathExpression] + “,” + [ModeExpression]? + “}
SourceExpression:= “Source=” + [ObjectDataSourceName]
PathExpression:= “Path=” + [AttributeName]|[AttributePropertyName]
ModeExpression:= “Mode=” + [ModeChoice]
ModeChoice:= “OneWay”|”TwoWay”
ObjectDataSourceName:= The value of any string assign to node /ObjectControlConfiguration/ObjectDataSource/Name.
AttributeName:= valid schema attribute name from the data source.
AttributePropertyName:= valid property name of a schema attribute from the data source.
Le code XML suivant montre comment lier une source de données à un élément Property :
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
Propriétés courantes
Tous les contrôles RCDC spécifiés dans ce document peuvent avoir les propriétés communes décrites dans cette section. Vous pouvez utiliser ces propriétés avec d’autres propriétés spécifiques à différents contrôles.
obligatoire : cette propriété indique que le champ est un champ obligatoire ou un champ facultatif. Un champ obligatoire doit être rempli avec une valeur. Une valeur vide n’est pas prise en charge pour l’entrée de chaîne. Un champ facultatif peut être laissé vide. Si ce champ est un champ obligatoire sans valeur renseignée, un message d’erreur s’affiche en haut du contrôle d’entrée. Vous pouvez spécifier explicitement si un champ est obligatoire ou facultatif. Vous pouvez également lier le champ avec les informations de schéma d’une liaison donnée entre un attribut et un type de ressource. Par défaut, si cette propriété est manquante, cela signifie que le contrôle est un contrôle d’entrée facultatif.
L’exemple suivant utilise une valeur explicite pour cette propriété :
<my:Property my:Name="Required" my:Value="True"/>
Il s’agit d’un exemple qui utilise une source de données dynamique pour cette propriété. Si vous avez utilisé le modèle pour une source de données affichée dans la section précédente de ce document, votre source de données est le schéma. Utilisez
<attribute name>.Required
comme chemin d’accès.<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
ReadOnly: en définissant cette propriété sur true, l’utilisateur final subit le contrôle en mode lecture seule. Il s’agit d’un attribut de type booléen facultatif. La valeur par défaut est définie sur false. Toutefois, parfois, le comportement de cette propriété est remplacé par le type de droits qu’une personne a sur la liaison de données avec le contrôle. Par exemple, si un utilisateur ne dispose pas des droits de mise à jour d’un champ et que le champ est lié avec des droits inline, l’utilisateur voit les données en mode lecture seule même si cette propriété a la valeur false.
RegularExpression: cette propriété spécifie les restrictions imposées à la valeur dans le contrôle. Les formats de cette valeur de propriété sont les formats pris en charge dans la norme StringRegex .NET. Pour plus d’informations, consultez expressions régulières .NET Framework. Si le contrôle est utilisé pour entrer une valeur, la valeur est vérifiée par rapport à la restriction spécifiée dans cette propriété lorsque l’utilisateur tente de quitter la page active. Le message d’erreur s’affiche en haut du contrôle dont l’entrée n’est pas valide. L’utilisateur peut spécifier explicitement une expression régulière de chaîne. L’utilisateur peut également le lier à des informations de schéma d’un attribut donné. Par défaut, si cette propriété est manquante, cela signifie que le contrôle ne vérifie aucune restriction sur les chaînes d’entrée.
L’exemple suivant utilise une valeur explicite pour cette propriété :
<my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
Il s’agit d’un exemple qui utilise une source de données dynamique pour cette propriété. Si vous avez utilisé le modèle pour une source de données indiquée précédemment dans ce document, votre source de données est le schéma. Utilisez le
<attribute name>.StringRegex
comme chemin d’accès.<my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=Alias.StringRegex, Mode=OneWay}"/>
visible : il s’agit d’un attribut de type booléen facultatif. Vous pouvez utiliser cet attribut pour masquer l’ensemble du contrôle. La valeur par défaut est définie sur true.
Élément Options
L’élément Options inclut un ou plusieurs sous-nœuds Option. L’élément options est utilisé uniquement avec les contrôles UocRadioButtonList et UocDropDownList. Pour plus d’informations sur l’utilisation de ces contrôles, consultez la section Contrôles individuels de ce document.
Le schéma XSD suivant concerne l’élément Options :
<xsd:element name="Options">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Option">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
L’élément options a les attributs suivants :
Valeur: il s’agit d’un attribut obligatoire de type chaîne. L’attribut valeur doit être unique dans le même contrôle. Seuls les caractères non sensibles à la casse A à Z peuvent être utilisés.
Légende: cet attribut obligatoire est le nom complet de chaque option.
indicateur: il s’agit d’un attribut facultatif. Utilisez cet attribut pour fournir plus d’informations et d’indicateurs à l’utilisateur final.
Variables d'environnement
Les variables d’environnement suivantes peuvent être utilisées dans n’importe quelle configuration RCDC :
Variable | Description |
---|---|
<LoginID> |
Affiche l’ID de l’utilisateur actuellement connecté. |
<LoginDomain> |
Affiche le domaine de l’utilisateur actuellement connecté. |
<Today> |
Affiche la date et l’heure actuelles |
<FromToday_nnn> |
Affiche la date actuelle, plus nnn et l’heure, où nnn est un entier. |
<ObjectID> |
ID de ressource primaire RCDC. |
<Attribute_xxx> |
Retourne un attribut spécifié, xxx, de la ressource primaire RCDC. |
Déboguer des fichiers de configuration XML
Lorsque vous développez ou modifiez des fichiers de configuration XML pour un RCDC, vous pouvez réduire les erreurs en validant le code XML sur les fichiers XSD à l’aide d’un éditeur tel que Microsoft Visual Studio. Pour plus d’informations, consultez Présentation des outils XML dans Visual Studio 2005.
Personnaliser les fichiers d’aide
Si vous créez de nouvelles ressources et attributs, vous pouvez mettre à jour les fichiers d’aide existants dans le portail FIM avec du contenu pour vos ressources personnalisées. Les fichiers d’aide dans le portail FIM sont au format .htm et peuvent être modifiés manuellement. Pour plus d’informations sur la création d’attributs personnalisés, consultez Présentation de la gestion des ressources et des attributs personnalisés dans la documentation FIM 2010.
Important
Les informations de base sur la mise en forme ou la modification html ne sont pas fournies dans cet article. Les utilisateurs sont censés savoir comment modifier des fichiers HTML.
Emplacement des fichiers d’aide
Tous les fichiers d’aide du portail Microsoft Identity Manager 2016 SP1 se trouvent dans le dossier <ProgramFiles>\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Layouts\MSILM2\Help\1033\html
sur le serveur de service MIM.
Rechercher un fichier d’aide spécifique
Tous les fichiers d’aide du portail FIM sont nommés avec un identificateur global unique (GUID). Pour localiser le fichier approprié pour votre ressource personnalisée :
Dans le portail FIM, ouvrez le fichier d’aide sur la page Portail que vous souhaitez personnaliser.
Cliquez avec le bouton droit sur le fichier d’aide et sélectionnez Propriétés.
Mettez en surbrillance et copiez le fichier
<GUID\>.htm
dans le champ adresse URL .Accédez au dossier dans lequel les fichiers d’aide sont stockés et recherchez le fichier.
Ajouter du contenu pour l’attribut dans l’élément Grouping existant
Pour ajouter du contenu descriptif pour un nouvel attribut dans un élément de regroupement existant (onglet) :
Identifiez et recherchez le fichier d’aide approprié.
À l’aide d’un éditeur HTML, ouvrez le fichier.
Recherchez l’emplacement où vous souhaitez ajouter le contenu. En règle générale, il s’agit d’un paragraphe supplémentaire, par exemple :
<p xmlns="">A new paragraph with customized information.</p>
Il peut également s’agir d’un élément inséré dans une liste existante, par exemple :
<li class="unordered"><b>First Name</b> – The first name of the User.<br> <li class="unordered"><b>Last Name</b> - The last name of the User.<br> <li class="unordered"><b>Added a new line</b><br>
Ajouter du contenu pour l’élément de regroupement existant
La majorité des pages du portail FIM ont plusieurs éléments de regroupement (ou onglets) et les fichiers d’aide associés ont des sections avec signet qui concernent chaque élément de regroupement. Les signets au format HTML sont spécifiés dans les sections. Par exemple, il s’agit du code HTML de l’onglet Informations professionnelles à partir du fichier d’aide de la page Créer un utilisateur dans le portail FIM :
<a name="bkmk_grouping_WorkInfo" xmlns=""></a><h3 class="subHeading" xmlns="">Work Info</h3><p class="subHeading" xmlns=""></p><div class="subSection" xmlns="">
Il est référencé par l’élément Grouping WorkInfo dans le fichier XML de données de configuration pour la configuration Configuration pour la création d’utilisateurs RCDC. Le nom de fichier \<GUID\>.htm
et le signet sont spécifiés dans le paramètre my:Link
:
<my:Grouping my:Name="WorkInfo" my:Caption="%SYMBOL_WorkInfoTabCaption_END%" my:Enabled="true" my:Visible="true"> <my:Help my:HelpText="%SYMBOL_WorkInfoTabHelpText_END%" my:Link="5e18a08b-4b20-48b8-90c6-c20f6cbeeb44.htm#bkmk_grouping_WorkInfo"/>
Exemples de contrôles simples
Cette section fournit des exemples pour la création de différents contrôles de zone de texte simples.
La figure suivante montre quelques contrôles de zone de texte simples dans différents modes :
Le segment de code suivant crée le premier contrôle de zone de texte, qui utilise du texte explicite pour tous les attributs et propriétés :
<!-- Sample for a simple control to use explicit information. (with hints)-->
<my:Control my:Name="ExplicitControl" my:TypeName="UocTextBox" my:Caption="Explicit Control" my:Description="This is explicit description." my:Hint="This is a Hint (enter any text).">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
<my:Property my:Name="Text" my:Value="Enter Information Here"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple control to use explicit information.-->
Le segment de code suivant crée le deuxième contrôle de zone de texte, qui utilise la technique de liaison dynamique pour lier le contrôle à une autre source de données :
<!-- Sample for a simple control to use stored data information.-->
<my:Control my:Name="DynamicControl" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=DisplayName.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=DisplayName.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=DisplayName, Mode=OneWay}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required, Mode=OneWay}"/>
<my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=DisplayName.StringRegex, Mode=OneWay}"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple control to use stored data information.-->
Le segment de code suivant crée la troisième étiquette développée et le contrôle zone de texte :
<!-- Sample for a simple expanded control with caption control.-->
<my:Control my:Name="SampleExpandLabel" my:TypeName="UocLabel" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="Text" my:Value="This is an expanded control."/>
</my:Properties>
</my:Control>
<my:Control my:Name="ExpandedControl" my:TypeName="UocTextBox"
my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="Required" my:Value="false"/>
<my:Property my:Name="Columns" my:Value="40"/>
<my:Property my:Name="Text" my:Value="Expanded control (enter text)"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple expanded control.-->
Le segment de code suivant crée le quatrième contrôle de zone de texte désactivé. Bien que ce contrôle n’affiche pas de différence visible entre l’état désactivé et l’état activé, l’utilisateur ne peut plus entrer de données dans la zone de texte.
<!-- Sample for a simple disabled control.-->
<my:Control my:Name="DisabledControl" my:TypeName="UocTextBox" my:Caption="Disabled Control" my:Description="This is disabled simple control." my:Enabled="false">
<my:Properties>
<my:Property my:Name="Required" my:Value="false"/>
<my:Property my:Name="MaxLength" my:Value="128"/>
<my:Property my:Name="Text" my:Value="Disabled control"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple disabled control.-->
Contrôles individuels
Cette section documente les contrôles individuels fournis avec Microsoft Identity Manager 2016 SP1.
UocButton
Name: UocButton
Description: il s’agit d’un contrôle de bouton simple que vous pouvez utiliser pour déclencher certaines actions. Toutefois, étant donné que vous ne pouvez pas spécifier votre propre gestionnaire, l’utilisation de ce contrôle est limitée.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
Texte: cette propriété spécifie le texte qui apparaît sur le bouton. Il s’agit d’un attribut facultatif de type chaîne. Le texte prend une valeur de chaîne explicite.
événements:
- OnButtonClicked: l’événement est émis lorsque le bouton est cliqué.
Exemple:
de contrôle UocButton
Le segment XML suivant produit un bouton de contrôle UocButton simple :
<!--Sample enabled simple button control-->
<my:Control my:Name="ButtonControl" my:TypeName="UocButton" my:Caption="SampleButton" my:Description="This is a simple button."
my:Hint="Click the button">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="Text" my:Value="Click Me"/>
</my:Properties>
</my:Control>
<!--End of sample enabled simple button control -->
UocCaptionControl
Name: UocCaptionControl
Description: ce contrôle est utilisé pour afficher la légende d’une page RCDC. Ce contrôle est conçu pour être utilisé uniquement comme contrôle unique dans un regroupement d’en-têtes. L’utilisation de celui-ci dans tout autre contexte peut entraîner des problèmes de rendu ou des erreurs de portail.
Mode: Lecture seule (OneWay)
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
MaxHeight : Cette propriété spécifie la hauteur maximale de l’icône dans la section légende. Cette propriété est facultative. Cette propriété prend une valeur entière en pixels. La valeur par défaut est de 32 pixels.
événements:
- Il n’existe aucun événement pour ce contrôle.
Exemple:
Le segment de code suivant génère un de légende d’en-tête:
<!--Sample header caption control-->
<my:Control my:Name="SampleHeaderCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Header Caption" my:Description="Description Starts here.">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="32"/>
<my:Property my:Name="MaxWidth" my:Value="32"/>
</my:Properties>
</my:Control>
<!--End of sample header caption control-->
Le segment de code suivant génère une légende de contenu explicite:
<my:Control my:Name="SampleContentCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Sample Explicit Content Caption" my:Description="Explicit content caption with smaller icon">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="20"/>
<my:Property my:Name="MaxWidth" my:Value="20"/>
</my:Properties>
</my:Control>
<!--End of sample caption-->
Le segment de code suivant génère une légende dynamique nom complet :
<!--Sample content dynamic caption-->
<my:Control my:Name="Caption3" my:TypeName="UocCaptionControl" my:Caption="{Binding Source=schema, Path=DisplayName.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=DisplayName.Description, Mode=OneWay}"/>
<!--End of sample caption -->
UocCheckBox
Nom: UocCheckBox
Description: il s’agit d’un contrôle de case à cocher simple. Nous recommandons à l’utilisateur de lier ce contrôle à des données de type booléen. Ce contrôle peut être utilisé en tant que contrôle en lecture seule ou contrôle pouvant être mis à jour, en fonction des données auxquelles il est lié.
Remarque
Dans cette version, lors de l’utilisation du contrôle de case à cocher dans le mode d’édition pour afficher un attribut booléen, si l’attribut n’a pas de valeur précédemment affectée, le contrôle de ressources ajoute une valeur de false à l’attribut lorsque OK est cliqué en mode Édition. Le contournement consiste à toujours créer un attribut booléen qui suppose que la non-existence est identique à faux, ou à utiliser d’autres contrôles tels qu’une case d’option pour les attributs booléens.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
DefaultValue: il s’agit d’une propriété de type booléen facultative. La valeur par défaut est définie sur false. Ce champ spécifie le comportement par défaut d’une case à cocher. Cela peut être spécifié explicitement.
Activé: il s’agit d’une propriété de type booléen facultative. La valeur par défaut est définie sur false. Cette valeur remplace la propriété DefaultValue lorsqu’elle est présente avec DefaultValue. Ce champ spécifie le comportement d’une case à cocher. Comme DefaultValue, cela peut être spécifié explicitement ou lié à des données du serveur.
Texte: il s’agit d’un attribut de type chaîne facultatif. Le texte s’affiche à droite de la case à cocher. Vous pouvez utiliser cette propriété pour spécifier du texte qui fournit plus d’informations à l’utilisateur final.
événements:
- CheckedChanged: lorsque la case à cocher change d’état, cet événement est émis.
Exemple:
Dans l’exemple suivant, une liaison personnalisée est créée entre le type de ressource personnalisé et l’attribut IsConfigurationType. Le code XML est utilisé dans le RCDC d’un type de ressource personnalisé.
de contrôle UocCheckBox
Le segment de code suivant génère une case à cocher dynamique, comme indiqué dans la figure précédente. Ce type de liaison est plus polyvalent et plus utile qu’une case à cocher explicite. L’attribut doit appartenir au type de ressource actuel.
<!--Sample dynamic check box-->
<my:Control my:Name="SampleDynamicCheckBox" my:TypeName="UocCheckBox" my:Caption="Dynamic Check Box" my:Description="This is a dynamic check box. It saves to data source." my:RightsLevel="{Binding Source=rights, Path=IsConfigurationType}">
<my:Properties>
<my:Property my:Name="Text" my:Value="{Binding Source=schema, Path=IsConfigurationType.DisplayName, Mode=OneWay}"/>
<my:Property my:Name="Checked" my:Value="{Binding Source=object, Path=IsConfigurationType, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of sample dynamic check box -->
UocCommonMultiValueControl
Name: UocCommonMultiValueControl
Description: il s’agit d’un contrôle de zone de texte multiligne qui prend en charge la mise en forme de chaîne spéciale. Chaque valeur parmi les entrées à valeurs multiples est séparée les unes des autres par un point-virgule (;) ou un saut de ligne dans la zone de texte. Nous vous recommandons de lier ce contrôle avec des données de types à valeurs multiples, de chaîne courte et d’entier. Ce contrôle prend en charge le mode lecture seule et le mode pouvant être mis à jour.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
DataType: il s’agit d’un attribut de type chaîne obligatoire. Vous pouvez spécifier cela en tant que type String, Integerou Type dateTime explicitement. Vous pouvez également lier l’attribut avec la propriété dataType de l’attribut de schéma. Un type référence à valeurs multiples doit être géré par UOCListView ou UOCIdentityPicker. Boolean à valeurs multiples n’est pas un type de données pris en charge.
Lignes: il s’agit d’un attribut facultatif de type entier. Vous pouvez définir la hauteur de la zone en nombre de caractères. Par défaut, cette valeur est définie sur 1.
Colonnes: il s’agit d’un attribut de type entier facultatif. Vous pouvez définir le nombre de largeurs de la zone en nombre de caractères. La valeur par défaut est définie sur 20.
Valeur: il s’agit d’un attribut facultatif de type chaîne. Vous pouvez lier cet attribut uniquement avec la source de données.
événements:
- ValueListChanged: cet événement est déclenché lorsque la valeur actuelle du contrôle change.
Exemple :
Dans l’exemple suivant, un attribut de chaîne à valeurs multiples nommé AMultiValueString est créé et lié au type de ressource personnalisé. Cet exemple fonctionne uniquement après la création de cette liaison.
Le segment de code suivant génère un contrôle UocCommonMultiValueControl :
<!--Sample multivalue control-->
<my:Control my:Name="SampleDynamicMultiValueControl" my:TypeName="UocCommonMultiValueControl" my:Caption="{Binding Source=schema, Path=AMultiValueString.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=AMultiValueString.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=AMultiValueString}">
<my:Properties>
<my:Property my:Name="Rows" my:Value="6"/>
<my:Property my:Name="Columns" my:Value="60"/>
<my:Property my:Name="DataType" my:Value="String"/>
<!--not supported for above property my:Value={Binding Source=schema, Path=AMultiValueString.DataType, Mode=OneWay}"/>-->
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=AMultiValueString, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of sample multivalue control -->
UocDateTimeControl
Name: UocDateTimeControl
Description: il s’agit d’un contrôle de zone de texte, mais Description accepte uniquement un certain format. En mode lecture seule, il apparaît comme une étiquette. Pour connaître le format de la chaîne d’entrée prise en charge, consultez la propriété DateTimeFormat dans cette section.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
DateTimeFormat: il s’agit d’un attribut de type chaîne facultatif. Les formats pris en charge sont DateTime et DateOnly. La valeur par défaut est définie sur le format DateTime.
DateTime: l’attribut est mis en forme sous forme mm/jj/aaaa hh :mm :ss AM.
DateOnly: l’attribut est mis en forme en mm/jj/aaaa.
Remarque
Les formats DateTime et DateOnly sont pris en charge, quel que soit l’utilisateur qui spécifie la différence.
Valeur: il s’agit d’un attribut facultatif de type chaîne. Vous liez cet attribut à une source de données de ressource. La valeur de cet attribut doit être conforme au format datetime correct.
événements:
- DateTimeChanged: lorsque la valeur datetime change, l’événement se produit.
Exemple:
Le segment de code suivant produit le premier contrôle DateTime.
<!--Sample explicit DateTime control-->
<my:Control my:Name="SampleExplicitDateTimeControl" my:TypeName="UocDateTimeControl" my:Caption="Explicit Date Time Control" my:Description="The data shown here is explicit and in date time format.">
<my:Properties>
<my:Property my:Name="DateTimeFormat" my:Value="DateTime"/>
<my:Property my:Name="Value" my:Value="11/11/2008 00:00:00"/>
</my:Properties>
</my:Control>
<!--End of sample explicit DateTime control -->
Le segment de code suivant produit le deuxième contrôle DateTime. Si vous avez utilisé l’exemple de code dans la section Sources de données, l’attribut ExpirationTime est lié à tous les types de ressources. Par conséquent, vous pouvez l’utiliser avec le code suivant :
<!--Sample dynamic DateTime control-->
<my:Control my:Name="SampleDynamicDateTimeControl" my:TypeName="UocDateTimeControl" my:Caption="{Binding Source=schema, Path=ExpirationTime.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ExpirationTime.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=ExpirationTime}">
<my:Properties>
<my:Property my:Name="DateTimeFormat" my:Value="DateOnly"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ExpirationTime, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of dynamic explicit DateTime control -->
UocDropDownList
Nom: UocDropDownList
Description: il s’agit d’un contrôle de zone de liste déroulante simple. Ce contrôle est utilisé pour sélectionner des options dans un ensemble défini de choix. Les types de données de chaîne, d’entier, de datetime et de booléen sont de bons candidats pour ce contrôle.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
ValuePath: propriété permettant d’obtenir l’attribut Value à partir de ItemSource. Lorsque ItemSource est spécifié comme Personnalisé, le chemin d’accès à la valeur est défini sur Valeur. Il est lié au champ Valeur de l’élément Option, comme décrit dans cette section.
CaptionPath: propriété permettant d’obtenir l’attribut Value à partir de ItemSource. Lorsque ItemSource est spécifié comme Personnalisé, le chemin de valeur est défini sur Caption. Il est lié au champ Légende de l’élément Option, comme décrit dans cette section.
HintPath: propriété permettant d’obtenir l’attribut Value à partir de ItemSource. Lorsque ItemSource est spécifié comme Personnalisé, le chemin de valeur est défini sur Hint. Il est lié au champ Hint de l’élément Option, comme décrit dans cette section.
ItemSource: collection de ListControlItems qui définit les choix dans la liste. L’utilisateur peut définir explicitement cette valeur sur Custom et utiliser l’élément Option, comme décrit dans cette section, pour spécifier la valeur de chaîne.
SelectedValue: valeur actuellement sélectionnée. Il s’agit d’une propriété de type chaîne obligatoire. Cette propriété est liée à des données de chaîne de la source de données.
événements:
- SelectedIndexChanged: l’événement se produit lorsque la sélection dans la zone déroulante change.
Options :
Pour connaître la structure d’un élément Options, consultez 'élément Options.
Valeur: la valeur d’un élément Options unique peut être définie sur n’importe quelle chaîne qui est l’entrée valide de la source de données à laquelle le contrôle est lié.
Légende: la légende peut être n’importe quelle valeur de chaîne.
indicateur: l’indicateur peut être n’importe quelle valeur de chaîne.
Exemple:
options
Remarque
Pour que l’exemple fonctionne, vous devez lier un attribut de type chaîne existant Étendue avec le type de ressource personnalisé auquel le RCDC s’applique.
Le segment de code suivant génère une liste déroulante :
<!--Sample for drop-down list control-->
<my:Control my:Name="Scope" my:TypeName="UocDropDownList" my:Caption="{Binding Source=schema, Path=Scope.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Scope}">
<my:Options>
<my:Option my:Value="DomainLocal" my:Caption="Domain Local" my:Hint="to secure a local resource (i.e. a file share on your computer)" />
<my:Option my:Value="Global" my:Caption="Global" my:Hint="to secure resources across your team or division" />
<my:Option my:Value="Universal" my:Caption="Universal" my:Hint="to use this group across your organization" />
</my:Options>
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Scope.Required" />
<my:Property my:Name="ValuePath" my:Value="Value" />
<my:Property my:Name="CaptionPath" my:Value="Caption" />
<my:Property my:Name="HintPath" my:Value="Hint" />
<my:Property my:Name="ItemSource" my:Value="Custom" />
<my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=Scope, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for drop-down list control-->
UocFileDownload
Name: UocFileDownload
Description: ce contrôle contient un lien hypertexte. Lorsque le lien hypertexte est cliqué, une page Fichier d’enregistrement Windows s’affiche. L’utilisateur peut enregistrer le fichier sur son lecteur local. L’option Ouvrir est également prise en charge si Internet Explorer peut afficher le format de fichier. Les types de données recommandés pour utiliser ce contrôle sont des types de chaîne (XML) et binaires mis en forme.
Remarque
Dans cette version de Microsoft Identity Manager 2016 SP1, l’utilisateur doit fermer la fenêtre Internet Explorer dans laquelle il a ouvert le fichier, puis actualiser la page. Après avoir actualisé la fenêtre Internet Explorer, l’utilisateur peut ensuite démarrer le téléchargement pour enregistrer ou ouvrir à nouveau le même fichier dans la fenêtre d’origine.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
Texte: il s’agit d’un attribut de type chaîne facultatif qui définit le texte du lien hypertexte. L’utilisateur peut spécifier une chaîne explicite pour cette propriété.
Valeur: il s’agit d’un attribut obligatoire. Il spécifie la liaison d’attribut sur le serveur dont le contenu doit être téléchargé.
PromptedFileName: il s’agit d’un attribut facultatif de type chaîne. Il s’agit du nom de fichier suggéré à l’utilisateur lorsqu’il enregistre le fichier téléchargé.
ContentType: il s’agit d’un attribut de type chaîne obligatoire. Il s’agit du type de fichier dans lequel les données sont enregistrées. Le texte ou le fichier binaire sont les deux options de chaîne prises en charge. S’il s’agit d’un texte, la valeur de retour est considérée comme une longue chaîne. Sinon, pour le fichier binaire, la valeur de retour est considérée comme octet[]. Si le texte est sélectionné, l’utilisateur peut, en tant qu’option, ajouter un suffixe pour spécifier le type de format dans lequel se trouve le texte. Par exemple, le texte/xml est valide.
Remarque
Lorsque la valeur liée à ce contrôle est vide, le contrôle manque le lien hypertexte à utiliser pour déclencher l’action de téléchargement. Cela est dû au fait qu’il n’y a rien à télécharger.
événements:
- Il n’existe aucun événement pour ce contrôle.
Exemple:
Remarque
Avant de charger cet exemple de fichier, l’utilisateur doit créer une liaison entre un type de ressource personnalisé et l’attribut ConfigurationData existant.
Le segment de code suivant génère un contrôle de téléchargement de fichier :
<!--Sample dynamic download control-->
<my:Control my:Name="SampleDynamicFileDownloadControl" my:TypeName="UocFileDownload" my:Caption="{Binding Source=schema, Path=ConfigurationData.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ConfigurationData.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=ConfigurationData}">
<my:Properties>
<my:Property my:Name="Text" my:Value="Download Dummy xml"/>
<my:Property my:Name="PromptedFileName" my:Value="DummyXML.xml"/>
<my:Property my:Name="ContentType" my:Value="text/xml"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ConfigurationData}"/>
</my:Properties>
</my:Control>
<!--End of dynamic download control -->
UocFileUpload
Name: UocFileUpload
Description: ce contrôle contient une zone de texte qui affiche l’emplacement du fichier local à charger, un bouton Parcourir le fichier et un bouton de chargement. Lorsque l’utilisateur final clique sur un bouton Parcourir, une fenêtre Ouvrir un fichier Windows s’affiche. L’utilisateur final peut sélectionner un fichier sur son lecteur local à charger. Lorsque le fichier est sélectionné, l’emplacement du fichier s’affiche dans la zone de texte. Lorsque le bouton Charger est cliqué, le fichier est chargé vers la source de données locale côté client. Le contenu du fichier n’est pas encore envoyé au serveur. Les types de données recommandés pour utiliser ce contrôle sont les suivants : types de chaîne (XML) ou binaires mis en forme.
Remarque
Il n’y a aucune indication de la progression ou de l’état du chargement. Lorsque le fichier est chargé dans la source de données locale, la zone de texte est désactivée.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
Valeur: il s’agit d’un attribut obligatoire. Il spécifie la liaison d’attribut de schéma sur le serveur vers lequel les données sont chargées.
ContentType: il s’agit d’un attribut facultatif de type chaîne. Il s’agit du type de données dans lequel le fichier est enregistré sur le serveur. Cette propriété peut être définie sur Texte ou Binaire. Lorsque la propriété est manquante, la valeur par défaut est Binaire.
MaxFileSize: il s’agit d’un attribut de type chaîne facultatif. MaxFileSize définit la taille du fichier chargé. Par défaut, si la propriété est manquante, la taille maximale est de 1 mégaoctet (Mo).
PromptedForNoValue: il s’agit d’un attribut facultatif de type chaîne. Il définit le texte qui apparaît à l’utilisateur lorsqu’un fichier n’est pas chargé.
événements:
- fileUploaded: cet événement est émis lorsque le fichier est correctement chargé.
Exemple:
Remarque
Pour que l’exemple de code suivant fonctionne, vous devez créer un attribut de type binaire nommé ABinaryAttribute, puis créer une liaison entre un type de ressource personnalisé et cet attribut.
Le segment de code suivant génère un contrôle de chargement :
<!--Sample dynamic upload control-->
<my:Control my:Name="SampleDynamicFileUploadControl" my:TypeName="UocFileUpload" my:Caption="{Binding Source=schema, Path=ABinaryAttribute.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ABinaryAttribute.Description, Mode=OneWay}” my:RightsLevel="{Binding Source=rights, Path=ABinaryAttribute}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABinaryAttribute.Required}"/>
<my:Property my:Name="ContentType" my:Value="Binary"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ABinaryAttribute, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of dynamic upload control -->
UocFilterBuilder
Name: UocFilterBuilder
Description: il s’agit d’un contrôle complexe qui permet à l’utilisateur d’afficher une expression XPath MIM 2016. Certaines expressions XPath ne sont pas prises en charge. Pour plus d’informations sur l’utilisation du générateur de filtres, consultez l’aide du générateur de filtres.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
PermittedObjectTypes: définit une liste de types de ressources à afficher dans l’instruction select d’un générateur de filtres. Pour plus d’informations sur l’utilisation du générateur de filtres, consultez l’aide du générateur de filtres. La chaîne est au format ResourceTypeA, ResourceTypeB, où chaque type de ressource est séparé par une virgule « , ».
Valeur: il s’agit de la valeur avec laquelle le générateur de filtres est rendu. Seule une liaison avec des données de type chaîne qui contient une expression XPath est prise en charge. L’attribut Filter est un attribut recommandé pour lier ce contrôle.
PreviewButtonVisible: il s’agit d’une propriété de type booléen facultative. Lorsque cette propriété a la valeur false, l’utilisateur ne voit pas de bouton Aperçu. La valeur par défaut est définie sur true. Ce bouton peut être utilisé en combinaison avec un contrôle d’affichage de liste pour afficher un aperçu des résultats d’une expression XPath.
ExcludeGroupMembership: il s’agit d’une propriété booléenne. Lorsque cette propriété a la valeur true, vous ne pouvez pas créer un filtre qui utilise <attribut de référence> (par exemple, ResourceID) est membre de <'objet Group>. En d’autres termes, lorsque cette propriété a la valeur true, vous ne pouvez pas créer un filtre qui utilise le répertoire d’appartenance au groupe.
PreviewButtonCaption: il s’agit d’une chaîne facultative. Lorsque PreviewButtonVisible a la valeur true, vous pouvez utiliser cette propriété pour donner au bouton un texte personnalisé. Le texte apparaît sur le bouton Aperçu.
événements:
- OnFilterChanged: cet événement est déclenché lorsque le contenu du générateur de filtres change.
Exemple:
L’exemple de code suivant inclut un contrôle UOCLabel, un générateur de filtres simple avec PermittedObjectTypes et un affichage de liste d’aperçu. Pointez la propriété ListFilter en mode liste et la propriété Valeur du générateur de filtres vers le même attribut de source de données pour lier les deux.
Remarque
Avant d’utiliser cet exemple de code, créez une liaison entre un attribut Filter existant et un type de ressource personnalisé.
<!--Sample filter builder with preview list-->
<my:Control my:Name="ComplexFilterBuilderLabel" my:TypeName="UocLabel" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="Text" my:Value="This is a Filter Builder with preview."/>
</my:Properties>
</my:Control>
<my:Control my:Name="ComplexFilterBuilder" my:TypeName="UocFilterBuilder" my:RightsLevel="{Binding Source=rights, Path=Filter}" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="PermittedObjectTypes" my:Value="Person,Group" />
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=Filter, Mode=TwoWay}" />
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Filter.Required, Mode=OneWay}" />
</my:Properties>
</my:Control>
<my:Control my:Name="FilterBuilderwithpreview" my:TypeName="UocListView" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName,ObjectType,AccountName" />
<my:Property my:Name="EmptyResultText" my:Value="There is no members according to the filter definition." />
<my:Property my:Name="PageSize" my:Value="10" />
<my:Property my:Name="ShowTitleBar" my:Value="false" />
<my:Property my:Name="ShowActionBar" my:Value="false" />
<my:Property my:Name="ShowPreview" my:Value="false" />
<my:Property my:Name="ShowSearchControl" my:Value="false" />
<my:Property my:Name="EnableSelection" my:Value="false" />
<my:Property my:Name="SingleSelection" my:Value="false" />
<my:Property my:Name="ItemClickBehavior" my:Value=" ModelessDialog "/>
<my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}" />
</my:Properties>
</my:Control>
<!--end of sample filter builder with preview-->
UocHtmlSummary
Name: UocHtmlSummary
Description: vous pouvez utiliser ce contrôle pour définir une page récapitulative dans une page RCDC. Cette page récapitulative s’affiche une fois que l’utilisateur final envoie une demande. Ce contrôle ne peut être utilisé que dans un regroupement de résumés, et il doit être le seul contrôle. Nous vous recommandons vivement d’utiliser l’exemple de code fourni.
Remarque
Ce contrôle n’a pas été testé en grande partie.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
ModificationsXml: cette propriété doit être mise en forme en tant que {Binding Source=delta, Path=DeltaXml}, où delta est défini dans l’en-tête de configuration ObjectDataSource.
TransformXsl: cette propriété est mise en forme en tant que {Binding Source=summaryTransformXsl, Path=/}, où summaryTransformXsl est défini dans l’en-tête de configuration XmlDataSource.
événements:
- Il n’existe aucun événement pour ce contrôle.
Exemple:
Pour obtenir un exemple de ce contrôle, consultez l’exemple d’un regroupement de résumés dans la section d’élément Regroupement de ce document.
UocHyperLink
Name: UocHyperLink
Description: il s’agit d’un contrôle de lien hypertexte simple. Vous pouvez utiliser ce contrôle pour afficher des informations en tant que lien hypertexte.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
ObjectReference: il s’agit d’une propriété de type référence facultative. Si une ressource valide est référencée par le GUID défini dans cette propriété, le lien hypertexte fournit à l’utilisateur final un moyen d’accéder à la ressource. Cela s’exclue mutuellement avec la propriété NavigateUrl.
Texte: il s’agit d’une propriété de type chaîne facultative. Vous utilisez cette propriété pour définir le texte qui apparaît en tant que lien hypertexte.
NavigateUrl: il s’agit d’une propriété de type chaîne facultative. Vous utilisez cette propriété pour définir l’URL de chemin d’accès complet vers laquelle le lien hypertexte est lié. Cela s’exclue mutuellement avec la propriété ObjectReference.
événements:
- Il n’existe aucun événement pour ce contrôle.
Exemple:
Remarque
Vous avez besoin d’un GUID valide d’une ressource pour le lier. Dans ce cas, le deuxième lien hypertexte est généré avec un GUID valide. Le premier peut être n’importe quel site web.
Le segment de code suivant génère un lien hypertexte de redirection :
<!--Sample for a hyperlink that redirects page.-->
<my:Control my:Name="RedirectHyperlink" my:TypeName="UocHyperLink" my:Caption="Redirect Hyperlink" my:Description="This is a hyperlink that takes you to other pages.">
<my:Properties>
<my:Property my:Name="NavigateUrl" my:Value="http://www.microsoft.com"/>
<my:Property my:Name="Text" my:Value="Microsoft Home Page"/>
</my:Properties>
</my:Control>
<!--End of Sample for a hyperlink that redirect page-->
Le segment de code suivant génère un lien hypertexte qui fait référence à une ressource. La référence explicite peut être remplacée par l’expression {Binding Source=object, Path=Creator} pour la lier à une source de données. Cela peut être valide uniquement lorsque le gestionnaire de la ressource existe et qu’il s’agit d’une valeur de type référence.
<!--Sample for a hyperlink that reference object-->
<my:Control my:Name="ReferenceHyperlink" my:TypeName="UocHyperLink" my:Caption="Reference Hyperlink" my:Description="This is a hyperlink gives you an object view of the reference object">
<my:Properties>
<my:Property my:Name="ObjectReference" my:Value="e4e048b1-9e43-415e-806c-cf44c429c34c"/>
<my:Property my:Name="Text" my:Value="View a group in FIM 2010."/>
</my:Properties>
</my:Control>
<!--End of Sample for a hyperlink that reference object-->
UocIdentityPicker
Name: UocIdentityPicker
Description: ce contrôle se compose d’une zone de résolution facultative et d’une fenêtre Parcourir. La zone De résolution facultative se compose d’une zone de texte facultative pour entrer l’identité, un bouton Résoudre pour résoudre l’identité et un bouton Parcourir pour inviter une fenêtre de navigation contextuelle. La fenêtre Parcourir permet à l’utilisateur de sélectionner des identités via un contrôle d’affichage de liste. L’identité sélectionnée dans la fenêtre Parcourir est reflétée dans la zone Résoudre.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
UsageKeywords: il s’agit d’une propriété de chaîne facultative. Vous pouvez définir une liste d’étendues de recherche à utiliser dans le sélecteur de ressources en fournissant une liste des mots clés d’utilisation pris en charge par la structure SearchScopeConfiguration, où chaque mot clé est séparé par une apostrophe (').
filtre: il s’agit d’une propriété de chaîne facultative. L’utilisateur fournit une expression XPath pour étendre le sélecteur de ressources afin d’afficher uniquement les éléments qui s’intègrent dans une étendue définie. Cette propriété s’exclue mutuellement avec la propriété UsageKeywords. Lorsque l’étendue de recherche est appliquée, cette propriété n’a aucun effet.
ResultObjectType: il s’agit d’une propriété de chaîne facultative. Le type de ressource est utilisé pour afficher les ressources dans la liste des boîtes de dialogue contextuelles. Cela est utilisé avec le filtre pour aider le sélecteur d’identité à identifier le type de ressource retourné par le filtre et à afficher les données en conséquence. Cette propriété s’exclue mutuellement avec la propriété UsageKeywords. Lorsque l’étendue de recherche est appliquée, cela n’a aucun effet. La chaîne acceptée pour cette propriété est n’importe quel nom de type ressource unique, valide, par exemple, Person. Lorsque le filtre est censé retourner plusieurs types de ressources, la ressource est utilisée.
PreviewTitle: il s’agit du titre d’aperçu utilisé dans un affichage de liste. Pour plus d’informations sur cette propriété, consultez la section UocListView.
ListViewTitle: il s’agit d’une propriété de chaîne facultative. Vous pouvez utiliser cette propriété pour définir le texte affiché en haut de l’affichage de liste en tant que titre.
valeur: il s’agit d’une propriété de chaîne facultative. Il est recommandé de lier cela à un attribut de schéma pour connecter la valeur à une source de données.
Mode: il s’agit d’une propriété de chaîne facultative. Vous utilisez cette propriété pour définir si une valeur peut être sélectionnée par le sélecteur d’identité ou plusieurs identités peut être sélectionnée. SingleResult et MultipleResult sont les valeurs autorisées. Par défaut, il est défini sur SingleResult.
ObjectTypes: il s’agit d’une propriété de type chaîne facultative. Vous pouvez définir une liste de types de ressources que l’utilisateur final peut résoudre les entrées dans la zone Résolution du sélecteur d’identité. La liste se compose d’une liste de noms de type ressource séparés par une virgule « , ».
AttributesToSearch: il s’agit d’une propriété de type chaîne facultative. Vous pouvez définir une liste d’attributs à utiliser pour résoudre l’élément dans le sélecteur d’identité, où la liste est une liste d’attributs de schéma, séparées par une virgule « », Par exemple, si AttributesToSearch est défini sur
DisplayName, Alias
, l’utilisateur peut rechercher les éléments avecDisplayName = \<search value\>
ouAlias=\<search value\>
. Les noms d’attributs entrés ici doivent être des attributs valides sur les types de ressources cibles de la source de données spécifiée dans la propriété Value. Les types de ressources cibles sont disponibles dans le champ ObjectTypes. Tous les attributs doivent être valides sur tous les types de ressources donnés cités dans le champ ObjectTypes.ColumnsToDisplay: il s’agit d’une propriété de type chaîne facultative. L’utilisateur fournit une liste de noms d’attributs de schéma, séparés par une virgule « , ». Les attributs définis ici composent la colonne de l’affichage liste dans le sélecteur d’identité.
Lignes: il s’agit d’une propriété facultative entière. Cela fonctionne uniquement lorsque le mode est défini sur MultipleResult. Utilisez cette propriété pour définir la hauteur de la zone de texte Résoudre sur une taille donnée en unités de caractères.
MainSearchScreenText: il s’agit d’une propriété facultative de type chaîne. Il s’agit du texte personnalisé qui s’affiche pendant l’exécution de la recherche dans la fenêtre Parcourir.
événements:
- SelectedObjectChanged: cet événement est émis lorsque l’utilisateur modifie les ressources sélectionnées.
Exemple:
Remarque
Pour que cet exemple fonctionne, vous devez créer une nouvelle liaison entre l’attribut Manager et tout type de ressource personnalisé auquel ce code XML s’applique.
Le segment de code suivant génère un sélecteur d’identité en mode SingleResult à l’aide des propriétés Filter et ResultObjectType dans le cadre du RCDC :
<!--Sample for a single-selection identity picker using Filter and Result Object Type-->
<my:Control my:Name="SingleSelectionIdentityPicker" my:TypeName="UocIdentityPicker" my:Caption="A Single Selection Identity Picker" my:Description="The user is allowed to select only one entry here." my:RightsLevel="{Binding Source=rights, Path=Manager}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Manager.Required}"/>
<my:Property my:Name="Mode" my:Value="SingleResult" />
<!--Columns displayed in list view in pop-up window-->
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName, ObjectType" />
<!--Identities will be resolved against following attribute in the resolve textbox when resolve button is clicked.-->
<my:Property my:Name="AttributesToSearch" my:Value="DisplayName, AccountName" />
<!--single valued reference type attribute is used to bind the control-->
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=Manager , Mode=TwoWay}" />
<!--Scoping the list explicitly to All Persons name contains letter "e"-->
<my:Property my:Name="Filter" my:Value="/Person[contains(JobTitle, 'Manager')]"/>
<!--Result object type specify the type is Person-->
<my:Property my:Name="ResultObjectType" my:Value="Person"/>
<my:Property my:Name="ListViewTitle" my:Value="Select only one entry" />
<my:Property my:Name="PreviewTitle" my:Value="Entry selected:" />
</my:Properties>
</my:Control>
<!--End of sample for a single-selection identity picker.-->
La figure suivante montre un sélecteur d’identité en mode MultipleResult :
Remarque
Pour que cet exemple de code fonctionne, vous devez lier l’attribut ExplicitMember (un attribut de référence à valeurs multiples) au type de ressource personnalisé. Créez des étendues de recherche avec la propriété UsageKeyword définie sur Person et Group.
Le segment de code suivant crée un sélecteur d’identité en mode MultipleResult :
<!--Sample for a multiselection Identity Picker uses Search Scope-->
<my:Control my:Name="multiSelectionIdentityPicker" my:TypeName="UocIdentityPicker" my:Caption="A multi Selection Identity Picker" my:Description="The user is allowed to select more than one entry here" my:RightsLevel="{Binding Source=rights, Path=ExplicitMember}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ExplicitMember.Required}"/>
<my:Property my:Name="Mode" my:Value="MultipleResult" />
<my:Property my:Name="Rows" my:Value="10" />
<!--There are existing search scopes that has key word "Person" and "Group" use both sets of search scopes here.-->
<my:Property my:Name="UsageKeywords" my:Value="Person,Group"/>
<!--Columns displayed in list view in pop-up window-->
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName, ObjectType" />
<!--Identities will be resolved against following attribute in the resolve textbox when resolve button is clicked.-->
<my:Property my:Name="AttributesToSearch" my:Value="DisplayName, AccountName" />
<!--multi valued reference type attribute is used to bind the control-->
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ExplicitMember , Mode=TwoWay}" />
<my:Property my:Name="ResultObjectType" my:Value="Resource"/>
<my:Property my:Name="ListViewTitle" my:Value="Select multiple entries" />
<my:Property my:Name="PreviewTitle" my:Value="Entries selected" />
</my:Properties>
</my:Control>
<!--End of sample for a multiselection Identity Picker.-->
UocLabel
Name: UocLabel
Description: il s’agit d’un contrôle d’étiquette de texte simple, en lecture seule. Nous vous recommandons d’utiliser ce contrôle pour afficher des données en lecture seule.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
texte: il s’agit d’un attribut de type chaîne. Vous définissez cette propriété en fournissant une valeur de chaîne explicite ou en la liant à une source de données. Un exemple de liaison qui affecte la valeur de cette propriété est {Binding Source=object, Path=<nom d’attribut valide>.
Pour obtenir un exemple de contrôle UocLabel, consultez le contrôle simple dans la section Exemples de contrôles simples.
UocListView
Name: UocListView
Description: il s’agit d’un contrôle d’affichage de liste avancé. Il se compose d’un affichage de liste simple, d’une recherche simple facultative, d’un contrôle de recherche avancé facultatif, d’une zone d’aperçu de sélection facultative et d’une barre de boutons d’action. La recherche simple facultative se compose d’une étendue de recherche et d’une zone de texte de recherche simple. Le contrôle de recherche avancé est un générateur de filtres. L’affichage liste affiche une liste prédéfinie de ressources. Il peut également afficher les résultats de recherche provenant des contrôles de recherche dans ce contrôle. La barre de boutons d’action définit l’action à entreprendre en fonction de la sélection dans l’affichage liste. La zone Aperçu de la sélection affiche les éléments sélectionnés dans l’affichage liste.
Important
UocListView ne fonctionne pas avec les attributs de référence à valeur unique. Elle ne peut être utilisée qu’avec des attributs de référence à valeurs multiples. Pour obtenir des attributs de référence à valeur unique, consultez UocIdentityPicker dans ce document.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
SelectedValue: il s’agit d’une propriété de type chaîne facultative liée à un attribut de référence à valeurs multiples acceptant une liste de chaînes au format GUID.
PageSize: il s’agit d’une propriété entière facultative. L’utilisateur peut spécifier le nombre d’entrées qui s’intègrent dans une page dans un contrôle d’affichage de liste. La valeur par défaut est 10 entrées. Tout entier positif est valide.
UsageKeyword: il s’agit d’une propriété de type chaîne facultative. L’utilisateur peut spécifier une liste de mots clés qui définissent l’étendue de recherche utilisée dans le contrôle de recherche d’affichage liste. Il existe des ressources d’étendue de recherche dans le serveur FIM 2010. L’attribut d’une structure SearchScopeConfiguration, appelée UsageKeyword, est utilisé pour regrouper un ensemble d’étendues de recherche. L’affichage liste consomme cette liste de mots clés. Chaque mot clé est séparé par une virgule (,). Il s’agit du mot clé d’utilisation utilisé dans l’étendue de recherche correspondante que vous souhaitez afficher dans cet affichage de liste. Cela n’est appliqué que lorsque la propriété ShowSearchControl a la valeur true.
SearchControlAutoPostback: il s’agit d’une propriété booléenne facultative. Définissez la valeur true de cette propriété pour effectuer la publication automatique lorsqu’une recherche est déclenchée. Par défaut, SearchControlAutoPostback a la valeur false.
EmptyResultText: il s’agit d’une propriété de type chaîne facultative. Par défaut, elle est définie sur Aucun élément, mais elle peut être définie sur n’importe quelle valeur de chaîne. Ce texte s’affiche lorsqu’un résultat de recherche est vide.
ButtonHeight: il s’agit d’une propriété de type entier facultative. Définissez la valeur de cette propriété sur n’importe quelle valeur entière positive. Cette propriété définit la hauteur des boutons dans la barre d’action en pixels. La valeur par défaut est de 32 pixels.
ButtonWidth: il s’agit d’une propriété de type entier facultative. Définissez la valeur de cette propriété sur n’importe quelle valeur entière positive. Cette propriété définit la largeur des boutons dans la barre d’action en pixels. La valeur par défaut est de 32 pixels.
CaptionImageMaxHeight: il s’agit d’une propriété de type entier facultative. Définissez la valeur de cette propriété sur n’importe quel entier positif. Cette propriété définit la hauteur maximale de l’icône d’une légende facultative. La valeur par défaut est de 32 pixels.
CaptionImageMaxWidth: il s’agit d’une propriété de type entier facultative. Définissez la valeur de cette propriété sur n’importe quel entier positif. Cette propriété définit la largeur maximale de l’icône d’une légende facultative. La valeur par défaut est de 32 pixels.
CaptionImageUrl: il s’agit d’une propriété de type chaîne facultative. Cette propriété définit une URL qui lie à une image qui apparaît en tant qu’image de légende.
PreviewTitle: il s’agit d’une propriété de type chaîne facultative. Vous utilisez cette propriété pour définir le texte qui apparaît en haut de la zone d’aperçu de sélection.
EnableSelection: il s’agit d’une propriété de type booléen facultative. Vous utilisez cette propriété pour définir si un affichage de liste est en mode sélection. Si un affichage de liste est en mode sélection, une colonne de cases à cocher apparaît sur la colonne la plus à gauche de l’affichage liste et une zone d’aperçu de sélection apparaît en bas de l’affichage liste. La valeur par défaut de cette propriété est définie sur true.
SingleSelection: il s’agit d’une propriété de type booléen facultative. Si le mode de sélection est activé pour l’affichage de liste, la définition de cette valeur sur true limite l’utilisateur final à la sélection d’un seul élément dans la liste. Par défaut, la valeur de cette propriété est définie sur false. Cela signifie que, par défaut, l’utilisateur final peut sélectionner plusieurs éléments dans la liste.
RedirectUrl: il s’agit d’une propriété de type chaîne facultative. Utilisez cette propriété pour spécifier une page à rediriger lorsqu’un élément hypertexte est cliqué dans la liste. Cette URL peut contenir des espaces réservés remplacés par la valeur réelle pendant l’exécution. Les espaces réservés sont les suivants :
- {0} objectType
- {1} objectID
- {2} displayName
ShowTitleBar: il s’agit d’une propriété de type booléen facultative. Utilisez cette propriété pour spécifier si la barre de titre doit être visible. La valeur par défaut de cette propriété est false.
ShowActionBar: il s’agit d’une propriété de type booléen facultative. Utilisez cette propriété pour spécifier si la zone de barre d’action doit être visible. La valeur par défaut de cette propriété est true.
ShowPreview: il s’agit d’une propriété de type booléen facultative. Utilisez cette propriété pour spécifier si la zone d’aperçu doit être visible. La valeur par défaut de cette propriété est true.
ShowSearchControl: il s’agit d’une propriété de type booléen facultative. Utilisez cette propriété pour spécifier si le contrôle de recherche doit être visible. La valeur par défaut de cette propriété est true.
ResultObjectType: il s’agit d’une propriété de type chaîne facultative. Utilisez cette propriété pour spécifier le type d’objet attendu des résultats de la recherche. La valeur par défaut de cette propriété est Resource. Si le résultat de la recherche contient plusieurs types de ressources, cette valeur doit être spécifiée en tant que ressource.
ColumnsToDisplay: il s’agit d’une propriété facultative. Utilisez cette propriété pour spécifier les attributs que vous souhaitez afficher en tant que colonnes. La valeur par défaut de cette propriété est DisplayName, ResourceType. Chaque colonne est représentée par le nom système d’un attribut. Chaque colonne est séparée par une virgule « , ». Vous n’êtes pas obligé de spécifier une valeur pour cette propriété lorsque l’affichage liste est utilisé en mode sélection. En mode sélection, le paramètre de colonne provient de l’attribut SearchScopeColumn de l’étendue de recherche actuellement sélectionnée.
ListFilter: il s’agit d’une propriété de type chaîne facultative. Il s’agit du xpath utilisé pour afficher l’affichage de liste et n’est en vigueur que lorsque la propriété ShowSearchControl a la valeur false. Lorsque cette valeur est spécifiée, l’affichage liste utilise cette valeur de propriété pour les requêtes et l’affichage liste n’est pas en mode sélection. Le filtre peut être lié à un attribut de chaîne de la ressource :
<my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}"/>
ou être une chaîne qui contient une variable d’environnement prédéfinie :
<my:Property my:Name="ListFilter" my:Value="/Approval[Request=''%ObjectID%'']"/>
TargetAttribute: il s’agit d’une propriété obsolète. Sa valeur doit être le nom système d’un attribut référencé à plusieurs valeurs. Nous vous recommandons de ne plus utiliser cette propriété. Par exemple, dans la gestion de groupe, au lieu d’utiliser :
<my:Property my:Name="TargetAttribute" my:Value="ExplicitMember"/>
Utiliser:
<my:Property my:Name=”ListFilter” my:Value=”/Group[ObjectID=’%ObjectID%’]/ExplicitMember”/>
ItemClickBehavior: il s’agit d’une propriété de type chaîne facultative. Utilisez cette propriété pour spécifier si vous souhaitez que le clic sur un élément d’affichage de liste déclenche une publication de serveur ou affiche une vue détaillée de l’élément. Deux valeurs d’option sont prises en charge : ModelessDialog et Server. La valeur par défaut est ModelessDialog.
SearchOnLoad: il s’agit d’une propriété de type booléen facultative qui spécifie si le contrôle list-view doit interroger le chargement. Cette propriété s’applique uniquement lorsque l’affichage liste est en mode sélection. La valeur par défaut de cette propriété est true. Vous pouvez le désactiver si vous attendez que l’utilisateur tape généralement du texte dans la recherche pour obtenir un résultat significatif. Dans ce cas, l’affichage de liste affiche initialement un message pour indiquer à l’utilisateur comment effectuer une recherche. Le texte peut être personnalisé par les propriétés suivantes :
MainSearchScreenText: cette propriété de type chaîne facultative est applicable uniquement lorsque SearchOnload a la valeur true. Cette propriété peut être utilisée pour personnaliser le texte qui apparaît au milieu de l’affichage liste lorsque l’affichage liste ne recherche pas automatiquement. La valeur par défaut de cette propriété consiste à rechercher les ressources à l’aide de la recherche, comme décrit précédemment. Vous pouvez spécifier une valeur pour rendre le texte plus pertinent pour votre scénario.
SubSearchScreenText: cette propriété de type chaîne facultative est utilisée pour personnaliser le texte qui apparaît après la propriété MainSearchScreenText. En règle générale, vous n’avez pas besoin de spécifier de valeur pour cette propriété, sauf si vous souhaitez ajouter des instructions supplémentaires sur l’utilisation de l’affichage de liste.
événements:
- Il n’existe aucun événement pour ce contrôle.
Exemple:
Pour obtenir des exemples d’utilisation de l’affichage liste avec le contrôle UocFilterBuilder en tant que liste d’aperçu, consultez les exemples UocFilterBuilder plus haut dans ce document. UocListView peut également être utilisé sans le générateur de filtres.
UocNumericBox
Name: UocNumericBox
Description: il s’agit d’une zone de texte simple qui prend uniquement des valeurs entières. Ce contrôle prend en charge le mode lecture seule et le mode pouvant être mis à jour.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
MaxValue: il s’agit d’une propriété de type entier facultative. Utilisez cette propriété pour définir une validation côté client pour le contrôle. La valeur entrée par l’utilisateur final ne peut pas dépasser cette valeur. Vous pouvez entrer un entier explicite ou le lier à des données entières à partir d’une source de données à l’aide de {Binding Source=schema, Path=IntegerMaximum}.
MinValue: il s’agit d’une propriété de type entier facultative. Utilisez cette propriété pour définir une validation côté client pour le contrôle. La valeur que l’utilisateur final entre ne peut pas être inférieure à cette valeur. Vous pouvez entrer un entier explicite ou le lier à des données entières à partir d’une source de données à l’aide de {Binding Source=schema, Path=IntegerMinimum}.
DefaultValue: il s’agit d’une propriété de type entier facultative. Utilisez cette propriété pour définir une valeur par défaut pour le contrôle si le contrôle est utilisé pour créer de nouvelles données. Cette valeur ne peut être définie explicitement qu’sur un entier statique.
Valeur: il s’agit d’une propriété de type entier facultative. Lorsque vous liez cela avec des données de type entier à partir d’une source de données, la valeur de cet attribut s’affiche lorsque la page est chargée, puis elle est enregistrée dans la source de données après l’envoi.
événements:
- TextChanged: cet événement est émis lorsque la valeur actuelle à l’intérieur du contrôle change.
Exemple:
de contrôle UocNumericBox
Remarque
L’exemple de code suivant génère la première zone numérique. La zone numérique n’est pas connectée à une source de données ni à aucune information de schéma.
<!--Sample for an explicit Numeric Box-->
<my:Control my:Name="SampleExplicitNumericBox" my:TypeName="UocNumericBox" my:Caption="An Explicit NumericBox" my:Description="This is a dummy numeric box that is not linked with data source.">
<my:Properties>
<my:Property my:Name="MinValue" my:Value="1"/>
<my:Property my:Name="MaxValue" my:Value="100"/>
<my:Property my:Name="DefaultValue" my:Value="1"/>
</my:Properties>
</my:Control>
<!--End of sample for an explicit Numeric Box.-->
L’exemple de code suivant génère la deuxième zone numérique.
Remarque
Pour que cet exemple fonctionne, vous devez d’abord créer un attribut de type entier appelé AnIntegerAttribute et le lier au type de ressource personnalisé.
<!--Sample for a dynamically rendered numeric box-->
<my:Control my:Name="SampleDynamicNumericBox" my:TypeName="UocNumericBox" my:Caption="{Binding Source=schema, Path=AnIntegerAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=AnIntegerAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=AnIntegerAttribute}">
<my:Properties>
<my:Property my:Name="MaxValue" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.IntegerMaximum}"/>
<my:Property my:Name="MinValue" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.IntegerMinimum}"/>
<my:Property my:Name="DefaultValue" my:Value="1"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=AnIntegerAttribute, Mode=TwoWay}"/>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.Required}"/>
</my:Properties>
</my:Control>
<!--End of sample for a dynamically numeric box.-->
UocPictureBox
Name: UocPictureBox
Description: ce contrôle est utilisé pour afficher des données de type binaire et d’image. Nous vous recommandons d’utiliser ce contrôle avec des données de type binaire. L’image peut être rendue par une URL d’image fournie, des données de type binaire ou la source d’attribut qui contient des données de type image.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
ImageUrl: il s’agit d’une propriété de type chaîne facultative. Entrez l’URL de l’image cible.
MaxHeight: il s’agit d’une propriété de type de chaîne facultative. Elle définit la hauteur maximale de l’image à afficher en pixels.
MaxWidth: il s’agit d’une propriété de type chaîne facultative. Elle définit la largeur maximale de l’image à afficher en pixels.
ImageData: il s’agit d’une propriété de type binaire. Utilisez cette propriété pour lier une source de données à l’image affichée. La source de données liée doit être binaire. Vous pouvez également utiliser ce champ pour définir explicitement une image en fournissant des données au format byte[].
ImageResource: il s’agit d’une propriété de type binaire facultative.
AlternativeText: il s’agit d’une propriété de type chaîne facultative. Cette propriété apparaît en tant que texte de remplacement lorsque l’image ne peut pas être affichée.
événements:
- Il n’existe aucun événement pour ce contrôle.
Exemple:
Remarque
Pour utiliser cet exemple, vous devez disposer d’une liaison de données d’image existante avec le contrôle.
Le segment de code suivant génère un contrôle de zone d’image qui lie une source de données au contrôle :
<!--Sample for a Picture Box control binding with a data source-->
<my:Control my:Name="SamplePictureBoxImageData" my:TypeName="UocPictureBox" my:RightsLevel="{Binding Source=rights, Path=Photo}">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="100" />
<my:Property my:Name="MaxWidth" my:Value="100" />
<my:Property my:Name="ImageData" my:Value="{Binding Source=object, Path=Photo}" />
</my:Properties>
</my:Control>
<!--End of Sample for a Picture Box control-->
Le segment de code suivant génère un contrôle de zone d’image qui lie une image URL au contrôle :
<!--Sample for a Picture Box control bind with explicit URL-->
<my:Control my:Name="SamplePictureBoxImageUrl" my:TypeName="UocPictureBox">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="100" />
<my:Property my:Name="MaxWidth" my:Value="100" />
<my:Property my:Name="ImageUrl" my:Value="http://www.microsoft.com/dummypicture.jpg" />
</my:Properties>
</my:Control>
<!--End of Sample for a Picture Box control-->
UocRadioButtonList
Name: UocRadioButtonList
Description: il s’agit d’une liste de boutons d’option simple. Les choix s’excluent mutuellement dans cette liste. Ce contrôle est recommandé lorsque les utilisateurs ont cinq options ou moins à choisir. Sinon, UOCListView est recommandé.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
ValuePath: le chemin de valeur est défini sur Valeur. Il est lié au champ Valeur de l’élément Option, comme décrit dans cette section.
CaptionPath: le chemin de valeur est défini sur Caption. Il est lié au champ Légende de l’élément Option, comme décrit dans cette section.
HintPath: le chemin de valeur est défini sur Hint. Il est lié au champ Hint de l’élément Option, comme décrit dans cette section.
SelectedValue: valeur actuellement sélectionnée. Il s’agit d’une propriété de type chaîne obligatoire. Cette propriété est liée à des données de chaîne de la source de données.
événements:
SelectedIndexChanged: l’événement se produit lorsque la case d’option sélectionnée change.
CheckedChanged: lorsque la case d’option change son état, cet événement est émis.
Options :
Il ne peut y avoir que deux éléments Options comme options pour ce contrôle. Pour connaître la structure d’un élément Options, consultez 'élément Options.
Valeur: le champ Valeur d’un seul élément Option doit être défini sur True ou False.
légende: il peut s’agir de n’importe quelle valeur de chaîne.
indicateur: il peut s’agir de n’importe quelle valeur de chaîne.
Exemple:
Remarque
Pour que cet exemple fonctionne, vous devez créer un nouvel attribut booléen, ABooleanAttribute et le lier à votre type de ressource personnalisé.
Le segment de code suivant crée une liste de boutons d’option :
<!--Sample for option button list control-->
<my:Control my:Name="SampleRadioButtonList" my:TypeName="UocRadioButtonList" my:Caption="{Binding Source=schema, Path=ABooleanAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=ABooleanAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=ABooleanAttribute}">
<my:Options>
<my:Option my:Value="False" my:Caption="Set Value To False" my:Hint="By selecting this option, you are setting the value of the attribute to false." />
<my:Option my:Value="True" my:Caption="Set Value To True" my:Hint="By selecting this option, you are setting the value of the attribute to true." />
</my:Options>
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABooleanAttribute.Required}" />
<my:Property my:Name="ValuePath" my:Value="Value" />
<my:Property my:Name="CaptionPath" my:Value="Caption" />
<my:Property my:Name="HintPath" my:Value="Hint" />
<my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=ABooleanAttribute, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for option button list control-->
UocSimpleRadioButton
Name: UocSimpleRadioButton
Description: il s’agit d’un contrôle simple et à bouton d’option. L’utilisation de ce contrôle est similaire à une case à cocher simple. Il existe deux boutons d’option, qui s’affichent côte à côte avec l’étiquetage du texte. La liaison du contrôle aux données de type booléen est recommandée.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
TrueText: il s’agit d’une propriété de type chaîne facultative. Il s’agit du texte qui s’affiche lorsque le bouton d’option est sélectionné.
FalseText: il s’agit d’une propriété de type chaîne facultative. Il s’agit du texte qui s’affiche lorsque le bouton d’option n’est pas sélectionné.
SelectedItem: il s’agit d’une propriété de type booléen facultative. Cette valeur indique que le bouton d’option est sélectionné. Cela peut être lié à des données de type booléen à partir d’une source de données. La valeur par défaut est définie sur false.
événements:
- CheckedChanged: lorsque le bouton d’option change l’état de l’option sélectionné en non sélectionné, ou l’inverse, ce signal est émis.
Exemple:
Remarque
Pour que l’exemple fonctionne, vous devez créer un nouvel attribut booléen ABooleanAttribute et le lier à votre type de ressource personnalisé. Les données RCDC sont appliquées au même type de ressource personnalisé.
Le segment de code suivant génère un bouton d’option :
<!--Sample for simple option button control-->
<my:Control my:Name="SampleSimpleRadioButton" my:TypeName="UocSimpleRadioButton" my:Caption="{Binding Source=schema, Path=ABooleanAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=ABooleanAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=ABooleanAttribute}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABooleanAttribute.Required}" />
<my:Property my:Name="FalseText" my:Value="False"/>
<my:Property my:Name="TrueText" my:Value="True"/>
<my:Property my:Name="SelectedItem" my:Value="{Binding Source=object, Path=ABooleanAttribute, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for simple option button control-->
UocTextBox
Name: UocTextBox
Description: il s’agit d’une zone de texte simple qui prend en charge l’entrée de type chaîne. Nous vous recommandons d’utiliser ce contrôle pour établir une liaison avec des données de type chaîne.
Propriétés :
Toutes les propriétés courantes : pour plus d’informations sur ces propriétés, consultez propriétés communes.
MaxLength: il s’agit d’un attribut facultatif de type entier. Cette propriété spécifie la longueur maximale d’une entrée de chaîne. La valeur par défaut de cette propriété est de 128 caractères.
Texte: il s’agit d’une propriété de type chaîne facultative. Il s’agit du texte qui apparaît dans la zone de texte. Vous pouvez définir une chaîne explicite qui apparaît dans la zone de texte pendant le chargement initial du contrôle ou la lier à un attribut de schéma d’un type de chaîne.
Lignes: il s’agit d’une propriété de type entier facultative. Cette propriété définit la hauteur de la zone de texte en unités de caractères. La valeur par défaut est un caractère.
Colonnes: il s’agit d’une propriété de type entier facultative. Cette propriété définit la largeur de la zone de texte en unités de caractères. La valeur par défaut est de 20 caractères.
Wrap: il s’agit d’une propriété de type booléen facultative. En définissant la valeur de cette propriété sur true, l’utilisateur active la fonctionnalité Word Wrap dans la zone de texte. La valeur par défaut de cette propriété est définie sur true.
UniquenessValidationXPath: il s’agit d’une propriété de type chaîne facultative. Il prend une expression de filtre XPath FIM valide et garantit que l’entrée de valeur par l’utilisateur est unique dans les ressources qui sont dans l’étendue du filtre. Par exemple, pour vous assurer que le nom d’affichage demandé par l’utilisateur est unique dans tous les groupes de sécurité avec messagerie dans la base de données du service FIM, vous utilisez le
/Group[DisplayName=’%VALUE%’ and Type=’MailEnabledSecurity’
XPath . L’action de validation est effectuée lorsque l’utilisateur quitte la page. Cette propriété est prise en charge uniquement dans le RCDC pour la création d’une ressource.UniquenessErrorMessage: il s’agit d’une propriété de type chaîne facultative. Cette chaîne est utilisée pour afficher un message d’erreur si la validation UniquenessValidationXPath échoue et peut être un texte explicite ou une variable de ressource de chaîne. Si cette propriété n’est pas spécifiée, le message d’erreur par défaut d’une validation ayant échoué est «%VALUE% existe déjà. Essayez un autre.
événements:
- TextChanged: cet événement est émis lorsque le texte à l’intérieur de la zone de texte est modifié.
Exemple:
Consultez la section Exemples de contrôles simples pour obtenir un exemple complet de ce contrôle.
Annexe A : schéma XSD par défaut
Cette section présente le schéma XSD complet pour tous les RCDC par défaut fournis avec Microsoft Identity Manager 2016 SP1.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema targetNamespace="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:attribute name="TypeName" type="my:requiredString"/>
<xsd:attribute name="Name" type="my:requiredAlphanumericString"/>
<xsd:attribute name="Parameters" type="xsd:string"/>
<xsd:attribute name="DisplayAsWizard" type="xsd:boolean"/>
<xsd:attribute name="Caption" type="xsd:string"/>
<xsd:attribute name="AutoValidate" type="xsd:boolean"/>
<xsd:attribute name="Enabled" type="xsd:string"/>
<xsd:attribute name="Visible" type="xsd:string"/>
<xsd:attribute name="IsSummary" type="xsd:boolean"/>
<xsd:attribute name="IsHeader" type="xsd:boolean"/>
<xsd:attribute name="HelpText" type="xsd:string"/>
<xsd:attribute name="Link" type="xsd:string"/>
<xsd:attribute name="Description" type="xsd:string"/>
<xsd:attribute name="ExpandArea" type="xsd:boolean"/>
<xsd:attribute name="Hint" type="xsd:string"/>
<xsd:attribute name="AutoPostback" type="xsd:string"/>
<xsd:attribute name="RightsLevel" type="my:requiredString"/>
<xsd:attribute name="Value" type="xsd:string"/>
<xsd:attribute name="Handler" type="my:requiredString"/>
<xsd:attribute name="ImageUrl" type="xsd:string"/>
<xsd:attribute name="RedirectUrl" type="xsd:string"/>
<xsd:attribute name="ClickBehavior" type="xsd:string"/>
<xsd:attribute name="EnableMode" type="xsd:string"/>
<xsd:attribute name="ValueType" type="xsd:string"/>
<xsd:attribute name="Condition" type="xsd:string"/>
<xsd:element name="ObjectControlConfiguration">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:ObjectDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:XmlDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:Panel"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:TypeName"/>
<xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ObjectDataSource">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XmlDataSource">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Panel">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Grouping" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:DisplayAsWizard"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:AutoValidate"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Grouping">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Control" minOccurs="1" maxOccurs="256"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:IsHeader"/>
<xsd:attribute ref="my:IsSummary"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Help">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:HelpText"/>
<xsd:attribute ref="my:Link"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Control">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:CustomProperties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Options" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Buttons" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Properties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:ExpandArea"/>
<xsd:attribute ref="my:Hint"/>
<xsd:attribute ref="my:AutoPostback"/>
<xsd:attribute ref="my:RightsLevel"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CustomProperties">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##targetNamespace" processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Options">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="my:ValueType"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Option">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Buttons">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Button" minOccurs="1" maxOccurs="8"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Button">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
<xsd:attribute ref="my:ImageUrl"/>
<xsd:attribute ref="my:ClickBehavior"/>
<xsd:attribute ref="my:RedirectUrl"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:EnableMode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Property" minOccurs="1" maxOccurs="32"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Property">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Condition"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Events">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Event" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Event">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Handler"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="requiredString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="requiredAlphanumericString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Za-z0-9_]{1,128}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="requiredAnyURI">
<xsd:restriction base="xsd:anyURI">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="requiredBase64Binary">
<xsd:restriction base="xsd:base64Binary">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Annexe B : Résumé par défaut XSL
Cette section présente le résumé complet XSL fourni avec Microsoft Identity Manager 2016 SP1.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:template name="output-attribute-value">
<xsl:param name="attribute"/>
<xsl:param name="type"/>
<xsl:choose>
<xsl:when test="$type='Binary'">
<xsl:value-of select="$attribute" disable-output-escaping="yes"/>
</xsl:when>
<xsl:when test="$type='Text'">
<xsl:text xml:space="preserve" disable-output-escaping="yes">(text data)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="translate($attribute,' ',' ')" disable-output-escaping="yes"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="output-modified-value">
<xsl:param name="name"/>
<xsl:param name="attribute1"/>
<xsl:param name="text1"/>
<xsl:param name="attribute2"/>
<xsl:param name="text2"/>
<xsl:param name="type"/>
<tr class="listViewRow" style="height:22px;">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$name" disable-output-escaping="yes"/>
</td>
<xsl:choose>
<xsl:when test="$attribute1 and $attribute1!=''">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute1"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text1"/>
</td>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$attribute2 and $attribute2!=''">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute2"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text2"/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$name" disable-output-escaping="yes"/>
</td>
<xsl:choose>
<xsl:when test="$attribute1 and $attribute1!=''">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute1"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text1"/>
</td>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$attribute2 and $attribute2!=''">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute2"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text2"/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</tr>
</xsl:template>
<xsl:template name="output-localized-attribute-value">
<xsl:param name="locale"/>
<xsl:param name="attribute"/>
<xsl:param name="type"/>
<tr class="listViewRow" style="height:22px;">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$locale" disable-output-escaping="yes"/>
</td>
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$locale" disable-output-escaping="yes"/>
</td>
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:if>
</tr>
</xsl:template>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="ModifiedAttributes[@ActionType='Create']">
<!-- expected XML
<ModifiedAttributes ActionType="Create">
<Attribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InitializedValue="[the value]"/>
other <Attribute> elements
</ModifiedAttributes>
-->
<table cellspacing="0" cellpadding="3" class="commonSummaryListViewGridBorder">
<tr align="left" class="listViewHeader" style="height:22px;">
<th class="commonSummaryListViewHeaderCellBR">Attribute</th>
<th class="commonSummaryListViewHeaderCellBR">Value</th>
</tr>
<xsl:for-each select="ModifiedAttributes/Attribute">
<xsl:sort select="@DisplayName" order="ascending"/>
<tr class="listViewRow" style="height:22px;">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<xsl:if test="count(LocalizedValue)!=0">
<td class="commonSummaryListViewCellBR ms-vb">
<table cellspacing="0" style="width:100%">
<tr class="listViewHeader">
<th align="left" class="commonSummaryListViewHeaderCellBR">Language</th>
<th align="left" class="commonSummaryListViewHeaderCellBR">Status</th>
</tr>
<xsl:if test="@InitializedValue and @InitializedValue != ''">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</td>
</xsl:if>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<xsl:if test="count(LocalizedValue)!=0">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<table cellspacing="0" style="width:100%">
<tr class="listViewHeader">
<th align="left" class="commonSummaryListViewHeaderCellBR">Language</th>
<th align="left" class="commonSummaryListViewHeaderCellBR">Status</th>
</tr>
<xsl:if test="@InitializedValue and @InitializedValue != ''">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</td>
</xsl:if>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</xsl:when>
<xsl:when test="ModifiedAttributes[@ActionType='Modify']">
<!-- expected XML
<ModifiedAttributes ActionType="Modify">
<SingleAttribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InitializedValue="[the old value]" SetValue="[the new value]"/>
other <SingleAttribute> elements
<MultipleAttribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InsertedItem="[inserted items separated by ';']" RemovedItem="[removed items separated by ';']"/>
other <MultipleAttribute> elements
</ModifiedAttributes>
-->
<table class="commonSummaryListViewGridBorder" cellspacing="0" cellpadding="3">
<xsl:if test="ModifiedAttributes[count(SingleAttribute)!=0]">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Single-Value Attributes</th>
<th class="commonSummaryListViewHeaderCellBR">Old Value</th>
<th class="commonSummaryListViewHeaderCellBR">New Value</th>
</tr>
<xsl:for-each select="ModifiedAttributes/SingleAttribute">
<xsl:sort select="@DisplayName" order="ascending"/>
<xsl:if test="count(LocalizedValue)!=0">
<tr class="listViewRow">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td colSpan="2">
<table cellspacing="0" cellpadding="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Old Value</th>
<th class="commonSummaryListViewHeaderCellBR">New Value</th>
</tr>
<xsl:if test="(@InitializedValue and @InitializedValue !='') or (@SetValue and @SetValue != '')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td colSpan="2">
<table cellspacing="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Old Value</th>
<th class="commonSummaryListViewHeaderCellBR">New Value</th>
</tr>
<xsl:if test="(@InitializedValue and @InitializedValue !='') or (@SetValue and @SetValue != '')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
</tr>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@DisplayName"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="ModifiedAttributes[count(MultipleAttribute)!=0]">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Multiple-Value Attributes</th>
<th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
<th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
</tr>
<xsl:for-each select="ModifiedAttributes/MultipleAttribute">
<xsl:sort select="@DisplayName" order="ascending"/>
<xsl:if test="count(LocalizedValue)!=0">
<tr class="uocSummaryTitleTR">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td>
<table cellspacing="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
<th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
</tr>
<xsl:if test="(@RemovedItem and @RemovedItem!='') or (@InsertedItem and @InsertedItem!='')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td>
<table cellspacing="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
<th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
</tr>
<xsl:if test="(@RemovedItem and @RemovedItem!='') or (@InsertedItem and @InsertedItem!='')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
</tr>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@DisplayName"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:if>
</table>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>