B-Arts DocumentationIndice generale

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.