BFrameworkWebControls - domande degli sviluppatori
BTesto<T>
Posso usare BTesto senza EditForm?
Sì. EditForm è il componente standard Blazor per form e validazione, ma non è obbligatorio. BTesto<T> può essere usato con il solo @bind-Value; ValueExpression consente anche l'integrazione con i meccanismi di validazione Blazor.
Come imposto testo, numero, valuta, data oppure ora?
Specificare BType coerente con la proprietà e impostare DataType. Per valuta usare anche NumDec e, se il tipo è nullable, ValutaAcceptNULL.
Come realizzo un autocomplete?
Abilitare AutoComplete e fornire AutoCompleteSearch. Se il valore deve essere verificato o risolto, configurare anche AutoCompleteCheckValue e AutoCompleteGetItem.
Posso aprire un calendario da un campo data?
Sì. Per DataType.Data usare ActiveCalendarOnHelpButton, HelpButton, ShowCalendar() o il comportamento integrato del controllo.
BCombo
Posso caricare la combo da una lista in memoria?
Sì. Passare una lista, per esempio List<BItem>, a await combo.Init(source) e controllare il risultato booleano.
Posso caricarla direttamente dal database?
Sì. Configurare tabella/comando, campi ID e descrizione, filtro e ordinamento, quindi usare l'overload Init(BConnection, ...) eventualmente con parametri.
Come aggiungo una voce “Nessuna selezione”?
Impostare AddNullItem, NullItemValue e NullItemDescription.
BCheck
Come collego BCheck a una proprietà bool?
Usare @bind-Value="modello.Proprieta".
Posso mostrarlo come switch?
Sì, con SwitchStyle="true"; SwitchStyleAutoSize adatta le dimensioni.
Come sposto il focus dopo il check?
Impostare CtlNextFocus oppure usare SetCtlNextFocus(...); SetFocus() porta invece il focus sul check.
BGridView
Cosa posso fare con BGridView?
Può mostrare e modificare DataTable o collezioni di oggetti, generare o dichiarare colonne, paginare, ordinare, selezionare celle e righe, gestire inserimento/eliminazione, elenchi DB, bottoni, file, immagini e template personalizzati.
Funzionano copia e incolla nelle celle?
Sì. Ctrl+C copia il blocco selezionato in formato tabulato. In modalità Edit, quando non si sta scrivendo dentro l'editor della singola cella, l'incolla distribuisce righe e colonne a partire dalla cella corrente tramite PasteValue. Servono JavaScript attivo e permessi clipboard del browser.
Posso incollare dati copiati da Excel?
Sì, perché il controllo interpreta tabulazioni e ritorni a capo. Le colonne oltre il limite vengono ignorate; i valori vengono convertiti secondo il tipo della colonna e possono attivare gli eventi di modifica/validazione.
Come annullo la modifica di una cella?
Nel gestore di un evento validabile impostare BGridViewEventArgs.CancelEvent = true.
RowIndex e DataIndex sono la stessa cosa?
Non necessariamente. RowIndex è l'indice visuale; DataIndex identifica la posizione nella sorgente ed è quello da preferire con paginazione.
Posso usare colonne personalizzate?
Sì. Dichiarare BGridViewColumn e usare TemplateHeader o TemplateCell. Il contesto offre FieldValue e BVal(nomeCampo).
Posso creare una colonna elenco collegata al database?
Sì. Usare TipoColonna.Elenco, configurare tabella, ID, descrizione, filtro e ordinamento, e assegnare la Connection alla griglia.
Posso sapere quali righe sono selezionate?
Sì, tramite GetSelectedRows(). Per la posizione corrente usare GetCurrentCell(), GetCurrentRow() e GetCurrentCol().
BCalendar
Come recupero la data selezionata?
Usare @bind-Value oppure il callback OnDateSelected.
Posso limitare gli anni disponibili?
Sì, valorizzando AnniDisponibili.
Quando uso BCalendar invece del calendario di BTesto?
Usare BCalendar quando il calendario deve essere sempre visibile; per un normale campo data usare BTesto<DateTime?>.
BEditor
Cosa permette di fare BEditor?
Modifica HTML con formati di carattere e paragrafo, liste, collegamenti, immagini, tabelle, cronologia, ricerca/sostituzione, sorgente HTML, fullscreen e campi dinamici.
Supporta copia e incolla?
Sì: copia, incolla, incolla come testo semplice, copia stile e incolla stile. Il browser può applicare le proprie restrizioni di sicurezza alla clipboard.
Come recupero HTML o solo testo?
Usare GetHtmlAsync() per l'HTML e GetOnlyTextAsync() per il solo testo. SetTextAsync(html) sostituisce il contenuto.
Posso inserire immagini?
Sì. L'editor include la finestra immagini; usare Images e OnLoadImage per risolvere contenuto binario, file e URL.
Posso inserire campi segnaposto e visualizzarne l'anteprima?
Sì. Fornire Fields come lista di BItem, implementare GetValueField e abilitare il gruppo/pannello campi.
Posso personalizzare font, interlinea e stili?
Sì, tramite BEditorFont, BEditorInterline e BEditorStyle nei relativi fragment del controllo.
Posso rendere l'editor in sola lettura?
Sì, con ReadOnly o SetReadOnly(bool).
BToast
Come mostro un toast?
Dichiarare <BToast @ref="toast" /> e chiamare await toast.ShowToast("Titolo", "Messaggio").
Posso modificarne dimensioni e stile?
Sì, tramite Width, Height e le proprietà CssClass*.
Perché il toast non appare?
Verificare InteractiveServer, caricamento di BFramework.js e CSS, build eseguita dopo l'installazione e assenza di errori JavaScript.
BMsgBox
Come mostro un semplice messaggio?
Dichiarare il componente con @ref e chiamare await msgBox.Show(messaggio, titolo, args, callback).
Come mostro una conferma Sì/No?
Usare Confirm(messaggio, titolo, TrueText, FalseText, args, callback) e controllare BMsgBoxEventArgs.button.
Posso impedire la chiusura dal callback?
Sì. Impostare BMsgBoxEventArgs.IsCancelled = true.
BModalPopup
Quando uso BModalPopup invece di BMsgBox?
Quando la finestra deve contenere componenti Razor o una form personalizzata; BMsgBox è più adatto a messaggi e conferme semplici.
Come apro e chiudo il popup?
Usare await popup.Show(args) e await popup.Hide().
Posso intercettare annullamento e impedire la chiusura?
Sì. Gestire OnCancel e impostare BCancelArgs.IsCancelled; AutoClosed controlla la chiusura automatica.
BTabs e BTab
Come creo più schede?
Dichiarare componenti BTab dentro BTabs, assegnando Name, Header e contenuto.
Come attivo una scheda da codice?
Usare ShowTab(name) oppure ActivateTab(tab).
Le schede non attive restano renderizzate?
Dipende da RenderMode: AllTabs le mantiene tutte, ActiveTab rende soltanto quella attiva.
BCollapsiblePanel
Come apro o chiudo il pannello?
Usare @bind-IsCollapsed oppure SetCollapsed(bool).
Posso inserire qualsiasi componente nel pannello?
Sì, tramite ChildContent.
Posso personalizzare intestazione e pulsante?
Sì, usando Titolo e le proprietà CSS dedicate a header, titolo, contenuto e pulsante.
BSplitPanel
Come inserisco contenuto nei due pannelli?
Usare i fragment LeftContent e RightContent.
Posso impostare larghezze minime?
Sì, tramite MinLeftWidth e MinRightWidth; le dimensioni iniziali sono configurabili separatamente.
Posso cambiare la divisione da codice?
Sì, con SetLeftWidth(double); il trascinamento utente è gestito dall'interop del controllo.
BMenu
Come creo il menu?
Fornire un DataTable, configurare i nomi dei campi e chiamare Init(DataTable).
Supporta sottomenu gerarchici?
Sì, attraverso CampoID e CampoIDPadre, con RootValue o radice nulla.
Posso associare comandi e immagini?
Sì, tramite CampoComando e CampoImage; ImageIsByteArray distingue immagini binarie da riferimenti testuali.
BUpload
Posso accettare più file o impedire duplicati?
Sì, con AcceptMultiFile e AcceptSameNameFile.
Come limito formato e dimensione?
Usare Filter e MaxSizeFile, espresso in byte.
BImage
Posso visualizzare sia URL sia byte[]?
Sì, tramite ImageUrl e ImageByte; PreferByte stabilisce la precedenza.
Posso caricare o incollare un'immagine?
Sì, con AllowUpload e AllowPastImage.
Come controllo adattamento e ritaglio?
Usare RenderMode e RenderPositionX/Y.
BColorPicker
Come recupero il colore scelto?
Usare @bind-Value per la stringa colore oppure leggere SelectedColor come BColor.
Posso mostrare HEX e RGB?
Sì, con ShowHexValue e ShowRGBValue.
Il contagocce è sempre disponibile?
Dipende dal supporto del browser. Il controllo usa ShowEyeDropper e rileva la disponibilità tramite JavaScript.
BTreeView
Posso usare oggetti o DataTable?
Sì. BTreeViewSetting associa i campi della sorgente al modello dell'albero.
Posso selezionare o spuntare più nodi?
Sì, con MultiSelect, ShowCheck e AutoCheck; leggere poi le selezioni tramite i metodi GetSelected* e GetChecked*.
Supporta drag-and-drop e caricamento dinamico?
Sì, tramite AllowDrag e DynamicLoading, con eventi per espansione e drop.
Posso personalizzare il rendering di un nodo?
Sì, usando NodeTemplate e BTreeNodeContext.
BPropertyGrid
Come genero gli editor di un oggetto?
Assegnare l'oggetto a BObject; tipi CLR e attributi B-Arts determinano controlli, caption, categorie, elenchi e autocomplete.
Le modifiche vengono applicate subito?
Con AutoUpdate=true sì. Altrimenti chiamare UpdateObject() e controllarne il risultato.
Posso filtrare o comprimere le categorie?
Sì, tramite CategoryFilter, CategoriesCollapsed, ShowCategory e DefaultCategory.
