← Tous les cours
UI · Cours gratuit

Maîtriser la bibliothèque de contrôles

Wisej.NET est livré avec plus d’une centaine de contrôles — grilles, graphiques, arborescences, éditeurs, conteneurs de mise en page et bien d’autres — et bien les connaître fait toute la différence entre se battre avec l’interface et avancer à toute vitesse. Ce cours est une visite approfondie de la bibliothèque de contrôles et de la façon de tirer le meilleur de chaque famille. Vous apprendrez à fond les grilles et les contrôles de données, construirez des graphiques riches et des arborescences, composerez des mises en page responsives et étendrez l’ensemble avec vos propres widgets personnalisés.

Tirez le meilleur parti de plus de 100 contrôles — grilles, graphiques, arborescences et widgets personnalisés.

Commencer ce cours gratuit

Également disponible en: EnglishDeutschItalianoEspañol

Programme

Module 1: Modèle mental de la bibliothèque de contrôles

Module 1 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les familles de contrôles et le shell d’Operations Console, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    L’arbre des contrôles côté serveur et le modèle des widgets dans le navigateur, les familles de contrôles, les propriétés communes et les conventions de nommage, et le shell d’Operations Console qui s’enrichit tout au long du cours. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoLes familles de contrôles et le shell d’Operations Console · 14 min

    Les familles de contrôles et le shell d’Operations Console — une vidéo pas à pas guidée du Module 1, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Créez la console Operations Console autour du modèle de contrôle Wisej.NET. Votre code C sharp modifie les objets côté serveur et le framework synchronise leurs widgets de navigateur. Comprendre cette relation vous aide à choisir les contrôles en fonction de leur comportement plutôt que de traiter l'écran comme un ensemble de fragments de balisage.

    Considérez un bouton comme un objet avec des propriétés, des événements, un cycle de vie et une prise en charge de thèmes. La modification du texte d'une étiquette d'état met à jour son état ; Wisej.NET transfère la modification appropriée au widget. Vous travaillez avec le contrat de contrôle au lieu de reconstruire manuellement l'élément affiché.

    Commencez la sélection avec la famille de contrôle. Les éditeurs collectent des valeurs, les conteneurs organisent les régions, les contrôles de données présentent les collections et les contrôles de rétroaction expliquent les résultats. Les extensions et les intégrations ajoutent des fonctionnalités. L'identification de la famille restreint la recherche avant de comparer les propriétés de contrôle individuelles.

    Demandez ce que l'utilisateur doit faire avec les données. Une hiérarchie suggère TreeView, les enregistrements suggèrent DataGridView et les régions d'interface réutilisables suggèrent UserControl. Recherchez un widget personnalisé uniquement après avoir vérifié si un contrôle existant correspond déjà à l'interaction requise.

    Notez les conventions avant d’ajouter d’autres écrans. Les noms de rôles professionnels, l'amarrage et l'ancrage délibérés, l'ordre du clavier, les commentaires et les touches d'apparence doivent être cohérents d'un module à l'autre. Un guide de sélection rend ces choix explicables lorsqu'un autre développeur étend la console.

    Renommez les contrôles et les gestionnaires pour leurs rôles afin qu'un lecteur puisse connecter le code à l'écran. Remplacez les positions absolues par des régions de navigation, de commande, d'état et de contenu. L'ancrage exprime la manière dont ces zones partagent l'espace lorsque la fenêtre change de taille.

    Centralisez la navigation pour que chaque page suive la même transition. Effacez la zone de contenu, insérez la nouvelle page pour la remplir et mettez à jour le statut. Si l'ouverture échoue, expliquez le problème au lieu de laisser l'utilisateur regarder une région vide inexpliquée.

    Utilisez les six pages d'espace réservé pour tester le shell avant de créer toutes ses fonctionnalités. Chaque bouton de navigation doit modifier à la fois le contenu et le statut. Cela établit un chemin de changement de page fiable que les éditeurs, écrans de données, tableaux de bord et écrans de widgets ultérieurs peuvent réutiliser.

    Fournissez le shell à quatre régions et six espaces réservés navigables avec des noms de contrôle significatifs. Dans le guide de sélection, expliquez la famille utilisée pour chaque région et son rôle. L'objectif est une fondation qu'un autre développeur peut étendre sans deviner comment fonctionne la navigation ou la mise en page.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 1 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Shell du catalogue de contrôles · 45 min

    Objectif: Créez le shell du catalogue de contrôles d’Operations Console : une Page principale avec une zone de navigation, une zone de contenu, une zone de commandes et une zone d’état ; des pages provisoires pour Editors, Layouts, Lists and Trees, DataGridView, Dashboard et Widgets ; une note ControlSelection.md dans le projet qui indique la famille de contrôles que vous utiliserez pour chaque zone ; des noms de contrôles clairs partout ; et une zone d’état qui se met à jour à chaque changement de navigation. Livrables : Shell principal avec zones de navigation, de contenu, de commandes et d’état ; Pages provisoires pour Editors, Layouts, Lists and Trees, DataGridView, Dashboard et Widgets ; ControlSelection.md indiquant la famille de contrôles choisie pour chaque zone ; Noms de contrôles clairs et zone d’état mise à jour à la navigation ; Capture d’écran et courte note expliquant les choix de contrôles.

Module 2: Éditeurs, boutons, validation et retour utilisateur

Module 2 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas qui fait passer de simples TextBox à un CustomerEditor validé, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    Choisir l’éditeur adapté à la valeur, un modèle de commandes pour les boutons, une validation ErrorProvider qui aide plutôt qu’elle ne bloque, et un retour non bloquant avec Toast et AlertBox. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoDes simples TextBox à un CustomerEditor validé · 14 min

    Des simples TextBox à un CustomerEditor validé — une vidéo pas à pas guidée du Module 2, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Créez CustomerEditor pour aider les utilisateurs à saisir des valeurs sans ambiguïté et à se remettre des erreurs. Choisir des éditeurs appropriés n’est que la première étape. La validation, l'état de la commande et un retour clair déterminent ensemble si le formulaire est fiable lors d'une sauvegarde réelle.

    Un champ de texte brut accepte des représentations dont la signification peut être floue, notamment les dates, les montants et les valeurs de statut. Utilisez l'interface pour éviter les erreurs évidentes et expliquer les erreurs restantes, tout en conservant les règles de service et de données comme protection supplémentaire.

    Faites correspondre le contrôle d’entrée à la signification de la valeur. Utilisez du texte pour les noms et les e-mails, un sélecteur de date pour la date de début et un éditeur numérique pour le crédit. Dans les listes d'état et de type, affichez un texte convivial tout en stockant la clé stable.

    Choisissez les commentaires en fonction de ce que l'utilisateur doit faire ensuite. ErrorProvider indique des corrections, des conseils offrent des conseils et une boîte de message demande une décision de blocage. Un toast ou une alerte signale la progression du flux de travail sans exiger un accusé de réception inutile.

    Créez la validation depuis l'éditeur : configurez ses propriétés, analysez les valeurs saisies, vérifiez les champs, puis vérifiez le formulaire et le service lors de l'enregistrement. En cas d’échec, gardez la correction visible et ciblée. En cas de succès, confirmez l’achèvement sans interrompre la tâche suivante de l’utilisateur.

    Laissez chaque validateur nommé posséder le message de son champ. ValidateContent les appelle tous, concentre la première entrée non valide et renvoie un résultat que le shell comprend. Cela sépare la décision de validation du choix de l’appelant de poursuivre ou non le flux de travail.

    Gardez l'enregistrement lisible en tant que validation, persistance, actualisation de l'état et notification. Utilisez finally pour libérer l'état occupé même en cas d'échec de la persistance. Une phrase d'échec claire et un toast de réussite non bloquant permettent à l'utilisateur de comprendre le résultat sans interpréter les exceptions.

    Validez l'e-mail mal formé, puis corrigez-le pour vérifier que les commentaires s'effacent rapidement. Lors de l'enregistrement, les trois commandes deviennent indisponibles, évitant ainsi les actions conflictuelles. Le toast final confirme la fin tout en laissant l'utilisateur libre de continuer sans appuyer sur un autre bouton.

    Fournissez CustomerEditor en tant que contrôle réutilisable avec des entrées appropriées aux valeurs et des validateurs nommés. Enregistrer, Réinitialiser et Valider doivent respecter son état d'occupation, et l'achèvement doit produire un toast ou une alerte. Testez les corrections et la récupération après échec avec autant de soin que la sauvegarde réussie.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 2 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Éditeur client avec validation · 45 min

    Objectif: Créez un UserControl CustomerEditor pour Operations Console avec des champs libellés pour le nom, l’e-mail, le statut, la date de début, la limite de crédit et le type de client, en utilisant l’éditeur adapté à chaque valeur plutôt qu’une TextBox pour tout. Ajoutez des messages ErrorProvider pour les champs obligatoires, le format de l’e-mail, la plage de la limite de crédit et les dates invalides ; des commandes Save, Reset et Validate désactivées et signalant l’attente pendant l’enregistrement ; et un Toast ou une AlertBox à la fin de la validation ou de l’enregistrement. Livrables : UserControl CustomerEditor avec des champs libellés pour le nom, l’e-mail, le statut, la date de début, la limite de crédit et le type de client ; Éditeurs adaptés : TextBox, DateTimePicker, NumericUpDown et ComboBox au lieu de texte libre partout ; Messages ErrorProvider pour les champs obligatoires, le format de l’e-mail, la plage de la limite de crédit et les dates invalides ; Commandes Save, Reset et Validate désactivées et signalant l’attente pendant l’enregistrement ; Retour Toast ou AlertBox à la fin de la validation ou de l’enregistrement.

Module 3: Conteneurs, mises en page, navigation et réutilisation

Module 3 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur le docking, les onglets et le UserControl réutilisable, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    L’ordre de docking, l’ancrage, les mises en page en flux et en tableau, les propriétés responsive par profil client, les surfaces de navigation et de commandes, et les UserControls comme unité de réutilisation. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoDocking, onglets et le UserControl réutilisable · 14 min

    Docking, onglets et le UserControl réutilisable — une vidéo pas à pas guidée du Module 3, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Remplacez les espaces réservés de la console par des conteneurs qui expriment la manière dont l'interface est organisée. SplitContainer, TabControl, ToolBar et StatusBar ont des tâches distinctes. Leur combinaison donne à la navigation, aux commandes et au contenu une disposition qui peut répondre aux changements de taille des fenêtres.

    Les coordonnées fixes ne décrivent qu'une seule taille de fenêtre. Les régions ancrées revendiquent plutôt les bords et laissent l'espace restant au contenu. Lorsque le redimensionnement expose un chevauchement, examinez ces relations de mise en page plutôt que d'ajouter un autre ensemble de corrections de pixels à un gestionnaire de redimensionnement.

    Vérifiez l'ordre des enfants lors de l'ancrage des barres et de la région divisée principale. Les barres supérieure et inférieure doivent réserver leur espace avant que la région de remplissage n'utilise le reste. Ancrez les contrôles dans ces régions en fonction de la façon dont leurs propres bords doivent réagir.

    Utilisez SplitContainer lorsque l'utilisateur doit contrôler la division, les onglets pour les sections homologues et les barres pour les commandes et l'état. Acheminez les menus, les barres d'outils, les rubans et les menus contextuels via un seul modèle de commande afin que différents points d'entrée effectuent la même action de manière cohérente.

    Commencez par la disposition du bureau, puis attribuez des valeurs spécifiques au profil uniquement aux propriétés qui doivent être modifiées. Les dispositions de téléphone et de tablette peuvent réutiliser les mêmes commandes. Créez un écran séparé uniquement lorsque le flux de travail réel diffère, et pas simplement parce que la fenêtre est plus étroite.

    L’amarrage de la coque établit sa structure ; ApplyNarrowProfile modifie la présentation et l'état de la navigation. Actualisez les délégués vers la commande partagée au lieu de dupliquer le comportement dans le gestionnaire de barre d'outils. Cela permet de séparer les décisions de mise en page de l'opération effectuée par la commande.

    Extrayez l'en-tête d'enregistrement répété dans un UserControl avec le titre, le nombre d'enregistrements et un événement d'actualisation. Gardez ses contrôles enfants privés. Les appelants dépendent alors de ce que fait l’en-tête, donc une modification ultérieure de la présentation interne ne nécessite pas de modifier chaque écran qui l’utilise.

    Affinez le navigateur et regardez la même présentation de changement de page. La navigation se réduit, le bouton de menu apparaît et l'état signale le profil étroit. Cela démontre la réutilisation d’une arborescence de contrôle plutôt que le passage à un écran mobile géré séparément.

    Reconstruisez le shell avec les conteneurs choisis, extrayez les régions répétées et ajoutez le profil étroit. Documentez pourquoi l'ordre d'amarrage fonctionne et capturez les deux largeurs. La remise doit expliquer les relations de mise en page et montrer que les deux présentations restent utilisables.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 3 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Shell d’Operations Console · 45 min

    Objectif: Remplacez les pages provisoires du Module 1 par le vrai shell d’Operations Console : un SplitContainer avec la navigation à gauche, une surface de détail TabControl à droite, une ToolBar pour les commandes fréquentes et une StatusBar qui affiche un état réel. Déplacez l’interface répétée dans des UserControls qui n’exposent que des propriétés et événements publics pertinents, mettez en œuvre une mise en page pour profil étroit avec des propriétés responsive ou une logique tenant compte du profil, et documentez vos choix de docking et d’ancrage dans LayoutNotes.md. Livrables : Shell de navigation construit avec SplitContainer, TabControl, ToolBar et StatusBar ; Interface répétée déplacée dans des UserControls à surface publique réduite ; Mise en page pour profil étroit avec des propriétés responsive ou une logique tenant compte du profil ; LayoutNotes.md documentant les choix de docking et d’ancrage ; Captures d’écran en largeur bureau et en largeur étroite.

Module 4: Listes, arbres, répéteurs et données hiérarchiques

Module 4 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur les listes virtuelles, les arbres à chargement différé et le chargement du détail, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    ComboBox, ListBox, ListView, TreeView, DataRepeater et PropertyGrid ; le mode virtuel de ListView, le chargement différé de TreeView, une identité de nœud stable et le chargement du détail piloté par la sélection. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoListes virtuelles, arbres à chargement différé et chargement du détail · 14 min

    Listes virtuelles, arbres à chargement différé et chargement du détail — une vidéo pas à pas guidée du Module 4, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Créez l'explorateur de documents avec une hiérarchie, une liste de documents et une région de détails réutilisable. La console d'opérations doit charger uniquement les informations dont l'interaction en cours a besoin. Le chargement paresseux de l'arborescence et les éléments de liste virtuelle rendent cette division visible dans la conception du contrôle.

    Choisissez le contrôle en fonction de la forme des informations et de la manière dont les utilisateurs y parcourent. Un choix plat, une hiérarchie, une collecte de cartes et une inspection immobilière sont des tâches différentes. Les traiter toutes comme des listes de sélection génériques rend la carte de l’utilisateur plus difficile à comprendre.

    Utilisez ComboBox pour des choix compacts, TreeView pour la hiérarchie et ListView lorsque la présentation des éléments est importante. DataRepeater et PropertyGrid servent de cartes et d'inspection. Planifiez tôt des identifiants stables et un chargement différé, afin que la croissance n'oblige pas à repenser la façon dont la sélection atteint les données.

    Le mode virtuel déclare la taille totale de la liste sans construire au préalable chaque élément de contrôle visible. RetrieveVirtualItem crée l'élément demandé à partir des données côté serveur lorsque cela est nécessaire, en attribuant ensemble son identifiant et son image. Cela sépare le nombre d'enregistrements existants du nombre d'éléments qui doivent être créés maintenant.

    Chargez uniquement le premier niveau de l’arborescence, en utilisant un espace réservé enfant pour indiquer qu’un nœud peut se développer. AfterExpand remplace cet espace réservé par les enfants récupérés par la clé stable dans Tag. Le texte affiché peut alors changer sans changer l'identité utilisée par le service.

    Tracez l'identifiant sélectionné dans l'arborescence ou la liste jusqu'à l'appel de service. BuildTree et l'extension préservent les clés stables ; La sélection charge le modèle avec gestion des erreurs et le transmet au contrôle détaillé. Aucune recherche de service ne doit dépendre du libellé d’une étiquette affichée.

    Laissez la sélection déclencher un événement, laissez la page récupérer les données et laissez le contrôle détaillé afficher le modèle renvoyé. Cela maintient la région de détail indépendante de l'accès à l'arborescence et à la base de données. Le même contrôle de détail peut donc être utilisé par une autre surface de navigation.

    Développez le nœud client et observez que seuls ses enfants se chargent. La catégorie sélectionnée rapporte des centaines de documents tout en créant uniquement les éléments de liste demandés. La sélection d'un document charge ses détails via le service ; utilisez ces limites pour raisonner environ dix fois plus de données.

    Fournissez à l'explorateur des identifiants de nœuds stables, des clés d'image appropriées et une liste utilisant le chargement virtuel ou différé. Récupérez les détails via un service et transmettez le modèle dans son UserControl. Expliquez comment la stratégie de chargement de chaque contrôle prend en charge la forme de ses données.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 4 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Explorateur de documents · 45 min

    Objectif: Créez l’explorateur de documents d’Operations Console : un TreeView de catégories ou de dossiers avec un ID stable attaché à chaque nœud, un ListView de documents lié au nœud sélectionné, un chargement différé ou un mode virtuel sur au moins un chemin de liste ou d’arbre, des icônes ou des clés d’image pour les différents types d’éléments, et un UserControl de détail chargé via une couche service ou view model à chaque changement de sélection. Livrables : TreeView de catégories avec un ID stable stocké sur chaque nœud ; ListView de documents lié au nœud d’arbre sélectionné ; Chargement différé ou mode virtuel sur au moins un chemin de liste ou d’arbre ; UserControl de détail chargé via une couche service ou view model lors de la sélection ; Icônes ou clés d’image pour les différents types d’éléments.

Module 5: Maîtrise du DataGridView

Module 5 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur la grille Orders, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    BindingSource et colonnes explicites, éditeurs personnalisés et cellules de commande, mode virtuel avec CellValueNeeded et un cache côté serveur, et HTML de cellule, contrôles de cellule et dessin de cellule utilisés à bon escient. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoLa grille Orders, du mode lié au mode virtuel · 14 min

    La grille Orders, du mode lié au mode virtuel — une vidéo pas à pas guidée du Module 5, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Construisez la grille des commandes par étapes afin que chaque technique réponde à un besoin particulier. La liaison établit l'origine des valeurs, le formatage les explique et le mode virtuel contrôle le chargement de données volumineuses. La bonne combinaison permet à Operations Console de rester utilisable à mesure que son volume de commandes augmente.

    Évaluez une grille à travers le travail réel de l’utilisateur : chargement, défilement, édition et interprétation de l’état. La même technique peut ne pas convenir à une petite liste modifiable et à un énorme historique de commandes. La taille des données et la tâche doivent déterminer la conception avant d’ajouter un raffinement visuel.

    Séparez le remplissage des données de la génération des colonnes. Une grille peut recevoir des lignes directement ou utiliser une source de liaison, que les colonnes soient générées automatiquement ou non. Pour l'écran de production, liez le modèle de vue via BindingSource et définissez explicitement les colonnes pour contrôler leur comportement.

    Définissez la colonne d'état plutôt que de vous fier à la génération automatique. Le CellFormatting convertit sa valeur en un badge d'état codé, rendant l'affichage plus facile à lire. Gardez la validation en dehors de cette étape de présentation : un badge change d'apparence, pas si la valeur sous-jacente est acceptable.

    Choisissez la présentation cellulaire la plus légère qui prend en charge la tâche. Les styles et le balisage formaté coûtent moins cher que l’intégration de contrôles ou la peinture personnalisée. Un bouton pour chaque ligne multiplie le nombre de contrôles, réservez donc l'interaction intégrée pour la ligne qui en a réellement besoin.

    Pour les ensembles de données volumineux, déclarez le nombre de lignes et diffusez les valeurs demandées via le mode virtuel. OrderCache récupère une page lorsque des données sont manquantes, plutôt que d'interroger une cellule à la fois. Appliquez d'abord le filtre afin que les lignes virtuelles représentent l'ensemble de résultats demandé.

    Comparez le nombre total de commandes avec le petit nombre de lignes transférées pour la zone visible. Sauter loin dans la grille demande une autre page, tandis que les badges et les régions de filtrage et de statut restent disponibles. L’utilisateur peut parcourir un résultat volumineux sans construire à l’avance l’interface de chaque ligne.

    Affectez l'éditeur de calendrier à la colonne d'échéance et vérifiez les deux sens de transfert de valeur. Si l'éditeur n'échange pas automatiquement la valeur, coordonnez-la dans les événements de début d'édition et de fin d'édition. Un éditeur personnalisé n'est complet que lorsque la valeur choisie est renvoyée correctement.

    Fournissez des colonnes liées explicites, une cellule d’état formatée et un éditeur ou une colonne de commande significative. Ajoutez le cache virtuel et les régions de filtre et d'état composées. Vérifiez à la fois l’édition ordinaire et la navigation dans les lignes distantes afin que les stratégies d’interaction et de chargement de la grille fonctionnent ensemble.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 5 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Grille des commandes · 45 min

    Objectif: Créez la grille Orders d’Operations Console : un DataGridView lié à une BindingSource avec des colonnes explicites et AutoGenerateColumns maîtrisé, une cellule de statut rendue avec AllowHtml et CellFormatting, une colonne d’éditeur personnalisé ou de commande, une version en mode virtuel ou adossée à un cache pour le chemin des gros volumes, et une barre de filtre et une barre d’état composées, ancrées dans la grille ou autour. Livrables : DataGridView Orders avec des colonnes explicites liées à une BindingSource ; Cellule de statut rendue avec AllowHtml et CellFormatting ; Une colonne d’éditeur personnalisé ou de commande ; Version de la grille en mode virtuel ou adossée à un cache pour les gros volumes ; Barre de filtre et barre d’état composées, ancrées dans la grille ou autour.

Module 6: Graphiques, tableaux de bord, contenu, médias et documents

Module 6 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur ChartJS, PdfViewer et l’actualisation unique du tableau de bord, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    Datasets, libellés et options de ChartJS ; jauges et ProgressBar ; PdfViewer, HtmlPanel, Upload et GoogleMaps en gardant à l’esprit la frontière navigateur/serveur ; des tableaux de bord actualisés comme un seul modèle. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoChartJS, PdfViewer et une actualisation unique du tableau de bord · 14 min

    ChartJS, PdfViewer et une actualisation unique du tableau de bord — une vidéo pas à pas guidée du Module 6, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Construisez le tableau de bord autour des décisions que ses données doivent prendre en charge. Les graphiques, une jauge d'achèvement, un aperçu du document et le téléchargement peuvent partager un seul écran, mais ils nécessitent une actualisation coordonnée. La console des opérations doit afficher un instantané cohérent au lieu de mises à jour visuelles sans rapport.

    Commencez par poser la question à laquelle chaque région répond. Un visuel peut être attrayant mais ne fournir aucune aide à la décision utile. Supprimer cette ambiguïté avant de sélectionner un graphique empêche le tableau de bord de devenir un ensemble de graphiques dont l'utilisateur doit deviner le but.

    Faites correspondre l'affichage aux informations : les modèles nécessitent des graphiques, les enregistrements individuels nécessitent une grille, une valeur d'achèvement nécessite une jauge et l'emplacement nécessite une carte. Ces choix rendent les données plus faciles à interpréter car le contrôle sert la question plutôt que de décorer l'écran.

    Ajoutez ChartJS via son package et conservez ses options, étiquettes et ensembles de données sous la propriété du serveur. Le navigateur effectue le rendu. Convertissez le modèle d'affichage du tableau de bord en données de graphique en un seul endroit afin que la configuration du graphique ne se propage pas à des gestionnaires d'événements non liés.

    DashboardModel fournit des données agrégées sur les mois, les décomptes et les achèvements. RefreshDashboard attribue des étiquettes et des ensembles de données ensemble, puis met à jour la jauge, l'aperçu du document et l'heure. L'utilisation d'un seul modèle conserve les valeurs affichées liées à la même actualisation au lieu de mélanger des résultats distincts.

    Respectez les limites du navigateur lors de l'ajout d'aperçus, de téléchargements et de cartes. Le téléchargement envoie des octets explicitement choisis par l'utilisateur ; il ne donne pas au serveur l’accès pour parcourir le disque de l’appareil. Nettoyez le balisage intégré avant l’affichage afin que la gestion du contenu reste une partie intentionnelle de la conception.

    Actualisez le tableau de bord en une seule opération : demandez une seule fois les données agrégées et mettez à jour les contrôles ensemble. Afficher le chargement pendant son exécution et un horodatage visible par la suite. L'horodatage aide les utilisateurs à juger de la fraîcheur, tandis que l'agrégation évite de transférer des enregistrements bruts dont les graphiques n'ont pas besoin.

    Watch Refresh devient indisponible pendant que le graphique, la jauge, l’aperçu et l’horodatage changent ensemble. La jauge d’achèvement atteint soixante-dix-huit pour cent. Téléchargez ensuite le document sélectionné et observez l'aperçu le suivre, confirmant que le serveur a reçu le fichier choisi via le navigateur.

    Fournissez un tableau de bord dont le graphique et l'affichage de la progression proviennent du même modèle de vue. Ajoutez l'aperçu du document ou du balisage et téléchargez, avec une méthode RefreshDashboard mettant à jour l'écran complet. Expliquez à quelle question répond chaque région et vérifiez que l’actualisation reste coordonnée.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 6 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Onglet tableau de bord et contenu · 45 min

    Objectif: Créez l’onglet tableau de bord d’Operations Console : un graphique ChartJS en courbes ou en barres dont les libellés et les DataSets proviennent d’un view model de tableau de bord, une ProgressBar ou un indicateur de type jauge pour une valeur d’état, un aperçu de contenu PdfViewer ou HtmlPanel, un flux d’Upload, une carte ou un emplacement de contenu, et une méthode d’actualisation unique qui met à jour chaque contrôle du tableau de bord à partir d’un seul modèle. Livrables : Onglet tableau de bord avec un graphique ChartJS en courbes ou en barres ; Libellés et DataSets du graphique construits à partir d’un view model de tableau de bord ; ProgressBar ou indicateur de type jauge pour une valeur d’état ; Aperçu de contenu PdfViewer ou HtmlPanel et flux d’Upload ; Une méthode d’actualisation unique qui met à jour chaque contrôle du tableau de bord.

Module 7: Widgets personnalisés, extensions, thèmes et projet de synthèse

Module 7 de Maîtriser la bibliothèque de contrôles — tirez le meilleur parti de plus de 100 contrôles : grilles, graphiques, arbres et widgets personnalisés. Lisez le guide de la leçon et le guide du lab / de l’examen, regardez la vidéo pas à pas sur le wrapper Widget, réussissez la vérification des connaissances, puis réalisez le lab pratique dans Operations Console.

  1. LectureGuide de la leçon · 14 min

    Contrôles natifs ou widgets, composants, extender providers et packs d’icônes ; les packages du contrôle Widget, InitScript, WidgetEvent et la passerelle CallAsync ; thèmes et documentation ; le projet de synthèse Operations Console. Ce que cela signifie pour un développeur Wisej.NET — et comment aborder ce module.

    Lire le guide de la leçon (PDF)

  2. LectureGuide du lab / de l’examen · 10 min

    Ce que vous allez construire dans le lab pratique, l’approche suggérée et les livrables attendus.

    Lire le guide de la leçon (PDF)

  3. Leçon vidéoCréer un wrapper Widget et tracer les messages · 14 min

    Créer un wrapper Widget et tracer les messages — une vidéo pas à pas guidée du Module 7, construite étape par étape dans Operations Console. Elle se lance directement ici, dans le lecteur.

    Transcription de la narration

    Ajoutez la fonctionnalité de notation par étoiles uniquement après avoir confirmé que la bibliothèque native ne fournit pas le contrôle nécessaire. Le projet final enveloppe un widget de navigateur tout en préservant la propriété, les événements et le thème de Wisej.NET. Cela fait de l’intégration une partie du modèle de contrôle de l’application plutôt qu’un script isolé.

    Préférez un contrôle existant lorsqu’il fournit déjà le concepteur, l’état du serveur, les événements et le comportement du thème dont vous avez besoin. L'intégration personnalisée est justifiée par une fonctionnalité de navigateur ou une fonctionnalité de bibliothèque manquante. Arrêtez-vous au niveau le plus simple qui satisfait aux exigences au lieu de reconstruire le support déjà disponible.

    Name l'extension selon sa responsabilité avant de choisir sa mise en œuvre. Un widget, un composant, une extension, un pack d'icônes et une région d'interface réutilisable ne sont pas interchangeables. Cette distinction vous empêche de créer un contrôle personnalisé complet alors qu’une limite d’intégration plus petite suffirait.

    Chargez le script et la feuille de style via Packages, puis initialisez l'objet navigateur avec InitScript. Le widget envoie des modifications significatives via fireWidgetEvent et le serveur reçoit WidgetEvent. Les appels dans le sens inverse permettent au serveur de confirmer l'état à l'implémentation du navigateur.

    Le wrapper valide à la fois le type d'événement et sa charge utile avant d'appeler RatingService. Dans le rappel du navigateur, conservez la référence correcte du widget afin que l'événement soit renvoyé via l'instance prévue. Ces vérifications protègent la frontière entre une interaction avec le navigateur et un travail fiable côté serveur.

    Documentez le package, la propriété, l'événement, la charge utile et le contrat d'appel serveur à côté du code. Lorsque le widget échoue, inspectez l'ordre des ressources, les chemins, le timing d'initialisation et la recréation après actualisation dans les outils du navigateur. Un contrat écrit donne à chaque question de diagnostic une réponse attendue claire.

    Click une note et suivez l'échange complet. Le serveur vérifie la plage de un à cinq, enregistre et accuse réception de l'achèvement ; le navigateur affiche alors l'état enregistré. La bande de diagnostic identifie le contrôle, l'enregistrement, le profil et l'actualisation actuels, ce qui facilite le suivi de cet échange.

    Perfectionnez l'intégration via des apparences de thème ou des styles packagés, puis vérifiez le comportement réactif et les étiquettes accessibles. Évitez d'intégrer des décisions visuelles dans JavaScript qui devraient appartenir au thème. La console finale et ses conseils doivent expliquer pourquoi chaque choix de commande répond à l’objectif de son écran.

    Soumettez le widget fonctionnel avec ses packages, son chemin d'événement bidirectionnel et son contrat documenté dans le cadre de l'Operations Console complète. Incluez le script de démonstration et les notes de synthèse. L'examen doit montrer à la fois le résultat destiné à l'utilisateur et le raisonnement derrière la limite d'intégration choisie.

  4. LectureExercice de code avec l’IA · 20 min

    Construisez l’exemple OperationsConsole de ce module avec ChatGPT ou Claude à partir d’un prompt prêt à l’emploi qui oriente le modèle vers la spécification du module, puis relisez, exécutez et étendez ce qu’il vous renvoie — y compris en le comparant à notre propre solution de référence sur GitHub.

    Lire le guide de la leçon (PDF)

  5. Quiz de connaissancesVérification des connaissances — Module 7 · 10 min · Note de réussite 80%
  6. Lab pratiqueLab — Widget personnalisé et projet de synthèse · 45 min

    Objectif: Encapsulez un petit widget JavaScript de notation ou d’indicateur avec le contrôle Widget, ou configurez un package d’extension Wisej.NET : chargez ses packages JavaScript et CSS, déclenchez un événement côté serveur depuis le client avec le modèle d’événement de widget, appelez une fonction côté client depuis le serveur avec CallAsync ou Eval, appliquez-lui un thème cohérent avec la console, puis peaufinez le projet de synthèse Operations Console complet et préparez une démo de 5 minutes. Livrables : Écran basé sur un Widget ou une extension, avec ses packages JavaScript et CSS chargés ; Événement client vers serveur déclenché avec le modèle d’événement de widget ou un événement natif de l’extension ; Appel serveur vers client via CallAsync, Eval ou l’API de l’extension ; Contrat client/serveur documenté : packages, propriétés, événements et format du payload ; Projet de synthèse Operations Console peaufiné avec un script de démo de 5 minutes.