← Tutti i corsi
UI · Corso gratuito

Padroneggiare la libreria di controlli

Wisej.NET include più di cento controlli — griglie, grafici, alberi, editor, contenitori di layout e altro ancora — e conoscerli bene è la differenza tra combattere con l'interfaccia e volarci dentro. Questo corso è un viaggio in profondità nella libreria di controlli e nel modo di ottenere il massimo da ciascuna famiglia. Imparerai a fondo le griglie e i controlli dati, costruirai grafici ricchi e strutture ad albero, comporrai layout responsive ed estenderai l'insieme con widget personalizzati tuoi.

Ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati.

Inizia questo corso gratuito

Disponibile anche in: EnglishDeutschFrançaisEspañol

Programma

Modulo 1: Modello mentale della libreria di controlli

Modulo 1 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sulle famiglie di controlli e sullo shell di Operations Console, supera la verifica delle conoscenze e completa il lab pratico in Operations Console.

  1. LetturaGuida della lezione · 14 min

    L'albero dei controlli sul server e il modello dei widget nel browser, le famiglie di controlli, le proprietà comuni e le convenzioni di denominazione, e lo shell di Operations Console che cresce lungo tutto il corso. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoLe famiglie di controlli e lo shell di Operations Console · 14 min

    Le famiglie di controlli e lo shell di Operations Console — una videoguida del Modulo 1, costruita passo dopo passo in Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Costruire la Console operatore attorno al modello di controllo Wisej.NET. Il tuo codice C sharp modifica gli oggetti lato server e il framework sincronizza i widget del browser. Comprendere questa relazione ti aiuta a scegliere i controlli in base al comportamento anziché trattare lo schermo come una raccolta di frammenti di markup.

    Considera un pulsante come un oggetto con proprietà, eventi, ciclo di vita e supporto del tema. La modifica del testo di un'etichetta di stato ne aggiorna lo stato; Wisej.NET trasferisce la modifica rilevante al widget. Lavori con il contratto di controllo invece di ricostruire manualmente l'elemento visualizzato.

    Iniziare la selezione con la famiglia di controllo. Gli editor raccolgono valori, i contenitori organizzano le regioni, i controlli dei dati presentano le raccolte e i controlli del feedback spiegano i risultati. Gli extender e le integrazioni aggiungono funzionalità. L'identificazione della famiglia restringe la ricerca prima di confrontare le singole proprietà di controllo.

    Chiedere cosa deve fare l'utente con i dati. Una gerarchia suggerisce TreeView, i record suggeriscono DataGridView e le regioni dell'interfaccia riutilizzabili suggeriscono UserControl. Ottieni un widget personalizzato solo dopo aver verificato se un controllo esistente si adatta già all'interazione richiesta.

    Annotare le convenzioni prima di aggiungere altre schermate. I nomi dei ruoli aziendali, l'aggancio e l'ancoraggio deliberati, l'ordine della tastiera, il feedback e i tasti di aspetto devono essere coerenti tra i moduli. Una guida alla selezione rende queste scelte spiegabili quando un altro sviluppatore estende la console.

    Rinominare controlli e gestori in base ai rispettivi ruoli in modo che un lettore possa collegare il codice allo schermo. Sostituisci le posizioni assolute con aree di navigazione, comando, stato e contenuto. L'ancoraggio esprime il modo in cui queste aree condividono lo spazio quando la finestra cambia dimensione.

    Centralizza la navigazione in modo che ogni pagina segua la stessa transizione. Cancella l'area del contenuto, inserisci la nuova pagina per riempirla e aggiorna lo stato. Se l'apertura non riesce, spiegare il problema invece di lasciare che l'utente guardi un'area vuota inspiegabile.

    Utilizza le sei pagine segnaposto per testare la shell prima di svilupparne le funzionalità complete. Ogni pulsante di navigazione dovrebbe cambiare sia il contenuto che lo stato. Ciò stabilisce un percorso affidabile per il cambio di pagina che gli editor, le schermate dati, il dashboard e la schermata widget successivi possono riutilizzare.

    Fornisci la shell a quattro regioni e sei segnaposto navigabili con nomi di controllo significativi. Nella guida alla selezione, spiegare la famiglia utilizzata per ciascuna regione e il suo ruolo. L'obiettivo è una base che un altro sviluppatore può estendere senza indovinare come funziona la navigazione o il layout.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 1 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Shell del catalogo di controlli · 45 min

    Obiettivo: Crea lo shell del catalogo di controlli di Operations Console: una Page principale con un'area di navigazione, un'area contenuti, un'area comandi e un'area di stato; pagine segnaposto per Editors, Layouts, Lists and Trees, DataGridView, Dashboard e Widgets; una nota ControlSelection.md dentro il progetto che elenca quale famiglia di controlli userai per ciascuna area; nomi di controlli chiari ovunque; e un'area di stato che si aggiorna a ogni cambio di navigazione. Deliverable: shell principale con aree di navigazione, contenuti, comandi e stato; pagine segnaposto per Editors, Layouts, Lists and Trees, DataGridView, Dashboard e Widgets; ControlSelection.md con la famiglia di controlli scelta per ogni area; nomi di controlli chiari e un'area di stato che si aggiorna alla navigazione; screenshot e una breve nota che spiega le scelte sui controlli.

Modulo 2: Editor, pulsanti, validazione e feedback

Modulo 2 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sulla validazione di CustomerEditor, supera la verifica delle conoscenze e completa il lab pratico nella Operations Console.

  1. LetturaGuida della lezione · 14 min

    Scegliere l'editor adatto al valore, un modello a comandi per i pulsanti, una validazione con ErrorProvider che aiuta invece di bloccare, e feedback non bloccante con Toast e AlertBox. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoDa semplici TextBox a un CustomerEditor validato · 14 min

    Da semplici TextBox a un CustomerEditor validato — una videoguida del Modulo 2, costruita passo dopo passo nella Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Crea CustomerEditor per aiutare gli utenti a inserire valori non ambigui e a recuperare dagli errori. La scelta degli editor adatti è solo il primo passo. La convalida, lo stato del comando e il feedback chiaro insieme determinano se il modulo è affidabile durante un salvataggio effettivo.

    Un campo di testo normale accetta rappresentazioni il cui significato potrebbe non essere chiaro, in particolare date, importi e valori di stato. Utilizza l'interfaccia per prevenire errori evidenti e spiegare quelli rimanenti, mantenendo dietro di sé le regole del servizio e dei dati come protezione aggiuntiva.

    Abbina il controllo di input al significato del valore. Utilizza il testo per nomi ed e-mail, un selettore di data per la data di inizio e un editor numerico per il credito. Negli elenchi di stato e tipo, visualizza testo descrittivo durante la memorizzazione della chiave stabile.

    Scegli il feedback in base a ciò che l'utente deve fare dopo. ErrorProvider indica correzioni, suggerimenti offrono indicazioni e una finestra di messaggio richiede una decisione di blocco. Un avviso o un avviso segnala l'avanzamento del flusso di lavoro senza richiedere un riconoscimento non necessario.

    Crea la convalida verso l'esterno dall'editor: configura le sue proprietà, analizza i valori digitati, controlla i campi, quindi controlla il modulo e il servizio durante il salvataggio. In caso di fallimento, mantieni la correzione visibile e focalizzata. In caso di successo, conferma il completamento senza interrompere l'attività successiva dell'utente.

    Lascia che ogni validatore nominato sia proprietario del messaggio del suo campo. ValidateContent li chiama tutti, focalizza il primo input non valido e restituisce un risultato comprensibile dalla shell. Ciò separa la decisione di convalida dalla scelta del chiamante sull'opportunità di continuare il flusso di lavoro.

    Mantieni il salvataggio leggibile come convalida, persistenza, aggiornamento dello stato e notifica. Utilizzare finally per rilasciare lo stato occupato anche quando la persistenza fallisce. Una chiara frase di fallimento e un brindisi di successo non bloccante consentono all'utente di comprendere il risultato senza interpretare le eccezioni.

    Convalidare l'e-mail non valida e quindi correggerla per verificare che il feedback venga cancellato tempestivamente. Durante il salvataggio, tutti e tre i comandi diventano non disponibili, evitando azioni in conflitto. Il brindisi finale conferma il completamento lasciando l'utente libero di continuare senza premere un altro pulsante.

    Fornisci CustomerEditor come controllo riutilizzabile con input di valore appropriato e validatori denominati. Salva, Reimposta e Convalida dovrebbero rispettare lo stato occupato e il completamento dovrebbe produrre un avviso o un avviso. Testare le correzioni e il ripristino dopo un errore con la stessa attenzione del salvataggio riuscito.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 2 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Editor cliente con validazione · 45 min

    Obiettivo: Costruisci uno UserControl CustomerEditor per la Operations Console con campi etichettati per nome, email, stato, data di inizio, fido e tipo cliente, usando per ogni valore l'editor adatto invece di una TextBox per tutto. Aggiungi messaggi ErrorProvider per i campi obbligatori, la forma dell'email, l'intervallo del fido e le date non valide; comandi Save, Reset e Validate con comportamento disabilitato e di attesa durante il salvataggio; e un Toast o un AlertBox quando la validazione o il salvataggio si conclude. Deliverable: UserControl CustomerEditor con campi etichettati per nome, email, stato, data di inizio, fido e tipo cliente; editor coerenti con il valore — TextBox, DateTimePicker, NumericUpDown e ComboBox invece di testo libero ovunque; messaggi ErrorProvider per campi obbligatori, forma dell'email, intervallo del fido e date non valide; comandi Save, Reset e Validate con comportamento disabilitato e di attesa durante il salvataggio; feedback con Toast o AlertBox quando la validazione o il salvataggio si conclude.

Modulo 3: Contenitori, layout, navigazione e riuso

Modulo 3 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida su docking e UserControl, supera la verifica delle conoscenze e completa il lab pratico in Operations Console.

  1. LetturaGuida della lezione · 14 min

    Ordine di docking, ancoraggio, layout a flusso e a tabella, proprietà responsive per profilo client, superfici di navigazione e comando, e gli UserControl come unità di riuso. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoDocking, tab e lo UserControl riutilizzabile · 14 min

    Docking, tab e lo UserControl riutilizzabile — una videoguida del Modulo 3, costruita passo dopo passo in Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Sostituisci i segnaposto della console con contenitori che esprimono come è organizzata l'interfaccia. SplitContainer, TabControl, ToolBar e StatusBar hanno lavori distinti. La loro combinazione fornisce alla navigazione, ai comandi e al contenuto un layout in grado di rispondere alle modifiche delle dimensioni della finestra.

    Le coordinate fisse descrivono solo una dimensione della finestra. Le regioni ancorate rivendicano invece i bordi e lasciano lo spazio rimanente al contenuto. Quando il ridimensionamento espone la sovrapposizione, rivedi le relazioni di layout anziché aggiungere un'altra serie di correzioni pixel a un gestore di ridimensionamento.

    Controlla l'ordine figlio quando si agganciano le barre e la regione divisa principale. Le barre superiore e inferiore devono riservare il loro spazio prima che la regione di riempimento utilizzi il resto. Ancorare i controlli all'interno di quelle regioni in base a come dovrebbero rispondere i rispettivi bordi.

    Utilizzare SplitContainer quando l'utente deve controllare la divisione, le schede per le sezioni peer e le barre per i comandi e lo stato. Indirizza menu, barre degli strumenti, barre multifunzione e menu contestuali attraverso un modello di comando in modo che diversi punti di ingresso eseguano la stessa azione in modo coerente.

    Inizia con il layout del desktop, quindi assegna valori specifici del profilo solo alle proprietà che devono essere modificate. I layout di telefono e tablet possono riutilizzare gli stessi controlli. Crea una schermata separata solo quando il flusso di lavoro effettivo è diverso, non semplicemente perché la finestra è più stretta.

    Il docking della shell ne definisce la struttura; ApplyNarrowProfile modifica la presentazione della navigazione e lo stato. Refresh delega l’operazione al comando condiviso, invece di duplicarne il comportamento nel gestore della barra degli strumenti. In questo modo le scelte di layout restano separate dall’operazione eseguita dal comando.

    Estrai l'intestazione del record ripetuto in un UserControl con titolo, conteggio dei record e un evento di aggiornamento. Mantieni privati ​​i controlli secondari. I chiamanti dipendono quindi da ciò che fa l'intestazione, quindi una successiva modifica del layout interno non richiede la modifica di ogni schermata che la utilizza.

    Restringi il browser e guarda la stessa presentazione cambiare pagina. La navigazione si chiude, viene visualizzato il pulsante del menu e lo stato segnala il profilo ristretto. Ciò dimostra il riutilizzo di un albero di controllo anziché il passaggio a uno schermo mobile gestito separatamente.

    Ricostruisci la shell con i contenitori scelti, estrai le regioni ripetute e aggiungi il profilo stretto. Documenta il motivo per cui l'ordine di ancoraggio funziona e acquisisci entrambe le larghezze. La consegna dovrebbe spiegare le relazioni di layout e mostrare che le due presentazioni rimangono utilizzabili.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 3 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Shell di Operations Console · 45 min

    Obiettivo: Sostituisci i segnaposto del Modulo 1 con lo shell vero di Operations Console: uno SplitContainer con la navigazione a sinistra, una superficie di dettaglio TabControl a destra, una ToolBar per i comandi frequenti e una StatusBar che mostra lo stato reale. Sposta l'interfaccia ripetuta dentro UserControl che espongono solo proprietà ed eventi pubblici significativi, realizza un layout per il profilo stretto con proprietà responsive o logica basata sul profilo, e documenta le tue scelte di docking e ancoraggio in LayoutNotes.md. Deliverable: shell di navigazione costruito con SplitContainer, TabControl, ToolBar e StatusBar; interfaccia ripetuta spostata in UserControl con una superficie pubblica ridotta; layout per profilo stretto con proprietà responsive o logica basata sul profilo; LayoutNotes.md che documenta le scelte di docking e ancoraggio; screenshot a larghezza desktop e a larghezza ridotta.

Modulo 4: Liste, alberi, repeater e dati gerarchici

Modulo 4 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida su liste virtuali, alberi lazy e caricamento del dettaglio, supera la verifica delle conoscenze e completa il lab pratico nella Operations Console.

  1. LetturaGuida della lezione · 14 min

    ComboBox, ListBox, ListView, TreeView, DataRepeater e PropertyGrid; la modalità virtuale della ListView, il caricamento lazy della TreeView, l'identità stabile dei nodi e il caricamento del dettaglio guidato dalla selezione. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoListe virtuali, alberi lazy e caricamento del dettaglio · 14 min

    Liste virtuali, alberi lazy e caricamento del dettaglio — una videoguida del Modulo 4, costruita passo dopo passo nella Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Costruisci l'esploratore documenti con una gerarchia, un elenco di documenti e un'area dettagli riutilizzabile. La Console operatore dovrebbe caricare solo le informazioni necessarie all'interazione corrente. Il caricamento lento dell'albero e gli elementi dell'elenco virtuale rendono visibile tale divisione nella progettazione del controllo.

    Scegli il controllo dalla forma delle informazioni e dal modo in cui gli utenti le navigano. Una scelta piatta, una gerarchia, una raccolta di carte e un'ispezione della proprietà sono compiti diversi. Trattarli tutti come elenchi di selezione generici rende la mappa dell’utente più difficile da comprendere.

    Utilizza ComboBox per scelte compatte, TreeView per la gerarchia e ListView quando la presentazione degli articoli è importante. DataRepeater e PropertyGrid servono carte e ispezioni. Pianificare in anticipo identificatori stabili e caricamento posticipato, in modo che la crescita non imponga una riprogettazione del modo in cui la selezione raggiunge i dati.

    La modalità virtuale dichiara la dimensione totale dell'elenco senza costruire in anticipo ogni elemento di controllo visibile. RetrieveVirtualItem crea l'elemento richiesto dai dati lato server quando necessario, assegnandone insieme l'identificatore e l'immagine. Questo separa il numero di record esistenti dal numero di elementi che devono essere creati ora.

    Carica solo il primo livello dell'albero, utilizzando un segnaposto figlio per indicare che un nodo può espandersi. AfterExpand sostituisce quel segnaposto con i figli recuperati dalla chiave stabile in Tag. Il testo visualizzato può quindi cambiare senza modificare l'identità utilizzata dal servizio.

    Traccia l'identificatore selezionato dall'albero o dall'elenco nella chiamata di servizio. BuildTree e l'espansione preservano le chiavi stabili; La selezione carica il modello con la gestione degli errori e lo passa al controllo dettaglio. Nessuna ricerca di servizi dovrebbe dipendere dal testo di un'etichetta visualizzata.

    Lascia che la selezione generi un evento, lascia che la pagina recuperi i dati e lascia che il controllo dei dettagli visualizzi il modello restituito. Ciò mantiene la regione dei dettagli indipendente sia dall'albero che dall'accesso al database. Lo stesso controllo di dettaglio può quindi essere utilizzato da un'altra superficie di navigazione.

    Espandi il nodo cliente e osserva che vengono caricati solo i suoi figli. La categoria selezionata riporta centinaia di documenti creando solo le voci di elenco richieste. La selezione di un documento ne carica il dettaglio tramite il servizio; utilizzare questi limiti per ragionare su una quantità di dati dieci volte superiore.

    Fornisci all'esploratore identificatori di nodo stabili, chiavi immagine appropriate e un elenco che utilizza il caricamento virtuale o differito. Recupera i dettagli tramite un servizio e passa il modello nel suo UserControl. Spiegare in che modo la strategia di caricamento di ciascun controllo supporta la forma dei relativi dati.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 4 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Esploratore documenti · 45 min

    Obiettivo: Costruisci l'esploratore documenti di Operations Console: una TreeView di categorie o cartelle con un ID stabile associato a ogni nodo, una ListView di documenti legata al nodo selezionato, caricamento lazy o modalità virtuale su almeno un percorso di lista o albero, icone o image key per i diversi tipi di elemento, e uno UserControl di dettaglio che carica attraverso un servizio o un view-model ogni volta che la selezione cambia. Deliverable: TreeView di categorie con un ID stabile memorizzato su ogni nodo; ListView di documenti legata al nodo selezionato; caricamento lazy o modalità virtuale su almeno un percorso di lista o albero; UserControl di dettaglio caricato tramite un servizio o un view-model alla selezione; icone o image key per i diversi tipi di elemento.

Modulo 5: Padroneggiare la DataGridView

Modulo 5 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sulla griglia Orders, supera la verifica delle conoscenze e completa il lab pratico in Operations Console.

  1. LetturaGuida della lezione · 14 min

    BindingSource e colonne esplicite, editor personalizzati e celle comando, modalità virtuale con CellValueNeeded e una cache lato server, e HTML nelle celle, controlli nelle celle e disegno delle celle usati con criterio. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoLa griglia Orders, da bound a virtuale · 14 min

    La griglia Orders, da bound a virtuale — una videoguida del Modulo 5, costruita passo dopo passo in Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Costruisci la griglia degli Ordini in più fasi in modo che ogni tecnica risolva un'esigenza particolare. L'associazione stabilisce da dove provengono i valori, la formattazione li spiega e la modalità virtuale controlla il caricamento di dati di grandi dimensioni. La giusta combinazione consente di continuare a utilizzare Operations Console man mano che il volume degli ordini aumenta.

    Valuta una griglia attraverso il lavoro effettivo dell'utente: caricamento, scorrimento, modifica e stato di interpretazione. La stessa tecnica potrebbe non adattarsi a un piccolo elenco modificabile e a un'enorme cronologia degli ordini. La dimensione dei dati e l'attività dovrebbero determinare la progettazione prima che venga aggiunto il miglioramento visivo.

    Separare la popolazione dei dati dalla generazione delle colonne. Una griglia può ricevere righe direttamente o utilizzare un'origine di associazione, indipendentemente dal fatto che le colonne vengano generate automaticamente. Per la schermata di produzione, associare il modello di visualizzazione tramite BindingSource e definire esplicitamente le colonne per controllarne il comportamento.

    Definisci la colonna di stato anziché fare affidamento sulla generazione automatica. CellFormatting converte il suo valore in un badge di stato codificato, rendendo il display più facile da leggere. Mantieni la convalida fuori da questo passaggio della presentazione: un badge cambia aspetto, non se il valore sottostante è accettabile.

    Scegli la presentazione di cella più leggera che supporti l'attività. Gli stili e il markup formattato costano meno dell'incorporamento di controlli o della verniciatura personalizzata. Un pulsante per ogni riga moltiplica il conteggio dei controlli, quindi riserva l'interazione incorporata alla riga che ne ha effettivamente bisogno.

    Per set di dati di grandi dimensioni, dichiara il conteggio delle righe e fornisci i valori richiesti tramite la modalità virtuale. OrderCache recupera una pagina quando mancano i dati, anziché interrogare una cella alla volta. Applicare prima il filtro in modo che le righe virtuali rappresentino il set di risultati richiesto.

    Confronta il conteggio completo degli ordini con il numero ridotto di righe trasferite per l'area visibile. Saltare molto in basso nella griglia richiede un'altra pagina, mentre i badge e le regioni di filtro e stato rimangono disponibili. L'utente può navigare in un risultato di grandi dimensioni senza costruire in anticipo l'interfaccia di ogni riga.

    Assegna l'editor del calendario alla colonna della data di scadenza e controlla entrambe le direzioni del trasferimento del valore. Se l'editor non scambia il valore automaticamente, coordinalo negli eventi di inizio modifica e di fine modifica. Un editor personalizzato è completo solo quando il valore scelto ritorna correttamente.

    Fornisci colonne associate esplicite, una cella di stato formattata e un editor significativo o una colonna di comando. Aggiungere la cache virtuale e le aree di filtro e stato composte. Verifica sia la modifica ordinaria che la navigazione su righe distanti in modo che l'interazione della griglia e le strategie di caricamento funzionino insieme.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 5 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Griglia Orders · 45 min

    Obiettivo: Costruisci la griglia Orders di Operations Console: una DataGridView collegata a un BindingSource con colonne esplicite e AutoGenerateColumns sotto controllo, una cella di stato resa con AllowHtml e CellFormatting, una colonna con editor personalizzato o comando, una versione in modalità virtuale o con cache per il percorso a grandi volumi, e una striscia di filtri e di stato composta dentro o intorno alla griglia. Deliverable: DataGridView Orders con colonne esplicite collegate a un BindingSource; cella di stato resa con AllowHtml e CellFormatting; una colonna con editor personalizzato o comando; versione della griglia in modalità virtuale o con cache per grandi volumi; striscia di filtri e di stato composta dentro o intorno alla griglia.

Modulo 6: Grafici, dashboard, contenuti, media e documenti

Modulo 6 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida su ChartJS, PdfViewer e un refresh unico della dashboard, supera la verifica delle conoscenze e completa il lab pratico nella Operations Console.

  1. LetturaGuida della lezione · 14 min

    DataSet, etichette e opzioni di ChartJS; gauge e ProgressBar; PdfViewer, HtmlPanel, Upload e GoogleMaps tenendo presente il confine browser/server; dashboard aggiornate come un unico modello. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoChartJS, PdfViewer e un unico refresh della dashboard · 14 min

    ChartJS, PdfViewer e un unico refresh della dashboard — una videoguida del Modulo 6, costruita passo dopo passo nella Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Costruisci la dashboard in base alle decisioni che i suoi dati dovrebbero supportare. Grafici, indicatore di completamento, anteprima del documento e caricamento possono condividere una schermata, ma necessitano di un aggiornamento coordinato. La Console operatore dovrebbe mostrare un'istantanea coerente invece di aggiornamenti visivi non correlati.

    Inizia affermando la domanda a cui ciascuna regione risponde. Un'immagine può essere attraente e tuttavia non fornire un utile supporto decisionale. Rimuovere tale ambiguità prima di selezionare un grafico impedisce alla dashboard di diventare una raccolta di elementi grafici di cui l'utente deve indovinare lo scopo.

    Abbina la visualizzazione alle informazioni: i modelli necessitano di grafici, i singoli record necessitano di una griglia, un valore di completamento necessita di un indicatore e la posizione necessita di una mappa. Queste scelte rendono i dati più facili da interpretare perché il controllo serve alla domanda piuttosto che decorare lo schermo.

    Aggiungi ChartJS tramite il suo pacchetto e mantieni le sue opzioni, etichette e set di dati sotto la proprietà del server. Il browser esegue il rendering. Converti il ​​modello di visualizzazione del dashboard in dati del grafico in un unico posto in modo che la configurazione del grafico non si diffonda tra gestori eventi non correlati.

    DashboardModel fornisce mesi aggregati, conteggi e dati di completamento. RefreshDashboard assegna insieme etichette e set di dati, quindi aggiorna l'indicatore, l'anteprima del documento e l'ora. L'utilizzo di un modello mantiene i valori visualizzati correlati allo stesso aggiornamento invece di mescolare risultati separati.

    Rispetta i limiti del browser quando aggiungi anteprime, caricamenti e mappe. Il caricamento invia byte scelti esplicitamente dall'utente; non fornisce al server l'accesso per esplorare il disco del dispositivo. Pulisci il markup incorporato prima della visualizzazione in modo che la gestione dei contenuti rimanga una parte intenzionale del progetto.

    Aggiorna la dashboard in un'unica operazione: richiedi i dati aggregati una volta e aggiorna insieme i controlli. Mostra il caricamento durante l'esecuzione e un timestamp visibile in seguito. Il timestamp aiuta gli utenti a giudicare l'aggiornamento, mentre l'aggregazione evita il trasferimento di record grezzi di cui i grafici non hanno bisogno.

    L'aggiornamento dell'orologio non è più disponibile mentre il grafico, l'indicatore, l'anteprima e il timestamp cambiano contemporaneamente. L'indicatore di completamento raggiunge il settantotto percento. Carica quindi il documento selezionato e osserva l'anteprima seguirlo, confermando che il server ha ricevuto il file scelto tramite il browser.

    Fornisci una dashboard il cui grafico e la visualizzazione dell'avanzamento provengono dallo stesso modello di visualizzazione. Aggiungi l'anteprima del documento o del markup e carica, con un metodo RefreshDashboard che aggiorna l'intera schermata. Spiegare a quale domanda risponde ciascuna regione e verificare che l'aggiornamento rimanga coordinato.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 6 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Tab dashboard e contenuti · 45 min

    Obiettivo: Costruisci il tab dashboard di Operations Console: un grafico ChartJS a linee o a barre le cui etichette e DataSet arrivano da un view model della dashboard, una ProgressBar o un indicatore tipo gauge per un valore di stato, un'anteprima di contenuto con PdfViewer o HtmlPanel, un flusso di Upload, una mappa o un segnaposto di contenuto, e un unico metodo di refresh che aggiorna tutti i controlli della dashboard a partire da un solo modello. Deliverable: tab dashboard con un grafico ChartJS a linee o a barre; etichette e DataSet del grafico costruiti da un view model della dashboard; ProgressBar o indicatore tipo gauge per un valore di stato; anteprima di contenuto con PdfViewer o HtmlPanel più un flusso di Upload; un unico metodo di refresh che aggiorna tutti i controlli della dashboard.

Modulo 7: Widget personalizzati, estensioni, temi e capstone

Modulo 7 di Padroneggiare la libreria di controlli — ottieni il massimo da oltre 100 controlli: griglie, grafici, alberi e widget personalizzati. Leggi la guida della lezione e la guida al lab / esame, guarda la videoguida sul wrapper Widget, supera la verifica delle conoscenze e completa il lab pratico nella Operations Console.

  1. LetturaGuida della lezione · 14 min

    Controlli nativi contro widget, componenti, extender provider e pacchetti di icone; i Packages del controllo Widget, InitScript, WidgetEvent e il collegamento CallAsync; temi e documentazione; il capstone di Operations Console. Che cosa significa per uno sviluppatore Wisej.NET — e come affrontare questo modulo.

    Leggi la guida della lezione (PDF)

  2. LetturaGuida al lab / esame · 10 min

    Che cosa costruirai nel lab pratico, l'approccio suggerito e i deliverable richiesti.

    Leggi la guida della lezione (PDF)

  3. Lezione videoCostruisci un wrapper Widget e segui i messaggi · 14 min

    Costruisci un wrapper Widget e segui i messaggi — una videoguida del Modulo 7, costruita passo dopo passo nella Operations Console. Parte direttamente qui nel player.

    Trascrizione della narrazione

    Aggiungere la funzionalità di valutazione a stelle solo dopo aver verificato che la libreria nativa non fornisce il controllo necessario. La chiave di volta racchiude un widget del browser preservando la proprietà, gli eventi e i temi Wisej.NET. Ciò rende l’integrazione parte del modello di controllo dell’applicazione piuttosto che uno script isolato.

    Preferisci un controllo esistente quando fornisce già la finestra di progettazione, lo stato del server, gli eventi e il comportamento del tema di cui hai bisogno. L'integrazione personalizzata è giustificata dalla mancanza di funzionalità del browser o di funzionalità della libreria. Fermarsi al livello più semplice che soddisfa il requisito invece di ricostruire il supporto già disponibile.

    Name l'estensione secondo la propria responsabilità prima di sceglierne l'implementazione. Un widget, un componente, un extender, un pacchetto di icone e un'area dell'interfaccia riutilizzabile non sono intercambiabili. Questa distinzione impedisce di creare un controllo personalizzato completo quando sarebbe sufficiente un limite di integrazione più piccolo.

    Carica lo script e il foglio di stile tramite Packages, quindi inizializza l'oggetto browser con InitScript. Il widget invia modifiche significative tramite fireWidgetEvent e il server riceve WidgetEvent. Le chiamate nella direzione opposta consentono al server di confermare lo stato all'implementazione del browser.

    Il wrapper convalida sia il tipo di evento che il relativo payload prima di richiamare RatingService. Nel callback del browser, mantieni il riferimento corretto al widget in modo che l'evento ritorni attraverso l'istanza prevista. Questi controlli proteggono il confine tra l'interazione del browser e il lavoro attendibile sul lato server.

    Documenta il pacchetto, la proprietà, l'evento, il payload e il contratto di chiamata al server accanto al codice. Quando il widget non funziona, controlla l'ordine delle risorse, i percorsi, i tempi di inizializzazione e la ricreazione dopo l'aggiornamento negli strumenti del browser. Un contratto scritto fornisce ad ogni domanda diagnostica una chiara risposta prevista.

    Click una valutazione e segui lo scambio completo. Il server controlla l'intervallo da uno a cinque, salva e conferma il completamento; il browser mostra quindi lo stato salvato. La striscia diagnostica identifica il controllo, il record, il profilo e l'aggiornamento correnti, rendendo più semplice tracciare lo scambio.

    Perfeziona l'integrazione attraverso aspetti di temi o stili pacchettizzati, quindi verifica il comportamento reattivo e le etichette accessibili. Evita di incorporare decisioni visive in JavaScript che dovrebbero appartenere al tema. La console finale e la sua guida dovrebbero spiegare perché ogni scelta di controllo serve allo scopo dello schermo.

    Invia il widget funzionante con i relativi pacchetti, percorso eventi bidirezionale e contratto documentato come parte della Console operatore completa. Includere lo script dimostrativo e le note chiave di volta. La revisione dovrebbe mostrare sia il risultato rivolto all'utente sia il ragionamento alla base del confine di integrazione scelto.

  4. LetturaEsercizio di coding con l'IA · 20 min

    Costruisci il progetto OperationsConsole di questo modulo con ChatGPT o Claude partendo da un prompt già pronto che indirizza il modello alla specifica del modulo, poi rivedi, esegui ed estendi quello che ti restituisce — confrontandolo anche con la nostra build di riferimento su GitHub.

    Leggi la guida della lezione (PDF)

  5. VerificaVerifica delle conoscenze — Modulo 7 · 10 min · Soglia di superamento 80%
  6. Laboratorio praticoLab — Widget personalizzato e capstone · 45 min

    Obiettivo: Incapsula un piccolo widget JavaScript di rating o di stato con il controllo Widget, oppure configura un pacchetto di estensione Wisej.NET: carica i suoi package JavaScript e CSS, solleva un evento lato server dal client con il pattern degli eventi widget, chiama una funzione lato client dal server con CallAsync o Eval, applica il tema della console, poi rifinisci il capstone completo di Operations Console e prepara una demo di 5 minuti. Deliverable: schermata basata su Widget o estensione con i suoi package JavaScript e CSS caricati; evento client-verso-server sollevato con il pattern degli eventi widget o con un evento nativo dell'estensione; chiamata server-verso-client tramite CallAsync, Eval o l'API dell'estensione; contratto client/server documentato: package, proprietà, eventi e formato del payload; capstone di Operations Console rifinito con uno script di demo da 5 minuti.