Ho una pagina con un controllo PXTab
e voglio mostrare o nascondere singole schede sulla pagina in modo dinamico. Come posso controllare la visibilità delle schede in fase di runtime?Nascondere dinamicamente una scheda dall'interfaccia utente
risposta
È possibile farlo in uno dei seguenti due modi:
- Impostando una proprietà VisibleExp sulla PXTabItem nella pagina ASPX
- Con abilitazione/disabilitazione di proprietà AllowSelect del parere che funge da DataMember della griglia che viene visualizzato su quella scheda
metodo 1 - VisibleExp In questo metodo, si d scrivere irettivamente le condizioni in base alle quali la scheda dovrebbe essere visibile nel codice ASPX dello schermo.
<px:PXTabItem Text="Tax Agency Settings" BindingContext="tab"
VisibleExp="DataControls["chkTaxAgency"].Value = 1">
Nota che il contesto di legame è importante in quanto specifica quali DataControls dell'elemento cui si desidera accedere in VisibleExp. Anche DataControls è un insieme di valori per i campi dell'interfaccia utente, quindi è necessario specificare gli ID dei controlli (non i campi della classe di accesso ai dati).
Tuttavia, questo metodo è estremamente limitato in molti modi:
- Il controllo condizione è limitata a controlli disponibili nell'interfaccia utente, quindi non è possibile condizione visibilità sullo stato interno del sistema .
- A volte questo metodo richiede di includere i controlli di dati "falsi" in ASPX che verranno verificati solo in VisibleExp, ma in realtà non verranno mai visualizzati dall'utente.
- Sembra non esserci supporto per condizioni complesse, tra cui AND/OR.
- Ugly
"
entità anziché virgolette normali nell'espressione - non particolarmente leggibili.
Soprattutto, se è necessario disabilitare la scheda per un determinato tipo di documento, non è possibile aggirare la codifica di una costante in VisibleExp. Si sarebbe scrivendo esplicitamente qualcosa di simile: VisibleExp = "! DataControls [" edDocumentType "] .Value = CHK"
Hard-codifica è generalmente considerato un pessimo pratica di sviluppo. Rappresenta una minaccia significativa alla manutenibilità del codice: probabilmente il codice di cui sopra sta andando a rompere qualcosa in futuro. Ad esempio se si decide di rinominare i codici documento da CHK a CHQ.
Oltre a ciò, questa soluzione non è facilmente generalizzabile a situazioni in cui improvvisamente si scopre la necessità di nascondere la scheda non solo per i controlli, ma anche per altri tipi di documenti. Ciò è dovuto alla mancanza di espressioni condizionali complesse sopra menzionate.
Metodo 2 - AllowSelect idea di questo metodo è - se si nascondono tutti i comandi dalla voce scheda, oltre Acumatica scheda nasconderà automaticamente con comandi visibili.
Consente di fare un esempio: si supponga che è necessario nascondere una scheda Applicazioni nome a seconda del tipo di documento selezionato in SO303000 (fatture):
La scheda che ci interessa ha un controllo griglia con un data membro impostato Regolazioni:
<px:PXTabItem Text="Applications" RepaintOnDemand="false">
<Template>
<px:PXGrid ID="detgrid" DataSourceID="ds" SkinID="Details">
<Levels>
<px:PXGridLevel DataMember="Adjustments">
............
</px:PXGridLevel>
</Levels>
</px:PXGrid>
</Template>
</px:PXTabItem>
E non che questa voce scheda ha un solo controllo - PXGrid
. Nota anche la proprietà richiesta qui - RepaintOnDemand="false"
. Questa proprietà indica se il controllo aggiorna il contenuto degli elementi della scheda (e seleziona i dati) dopo che l'elemento diventa visibile. Sfortunatamente, impostarlo su false comporta alcune perdite di prestazioni. In particolare, la vista Regolazioni 'Seleziona sarà chiamata molto più frequentemente.
Attualmente, la scheda è "intelligente" nel modo in cui capisce che quando il relativo controllo figlio (PXGridLevel
) non può eseguire una selezione sul relativo membro dati; in questo caso, la scheda si nasconde dall'interfaccia utente. Questo è il motivo per cui è possibile controllare la visibilità della scheda impostando la proprietà AllowSelect
della cache che corrisponde agli adattamenti:
Adjustments.Cache.AllowSelect =
doc.DocType != ARDocType.CashSale
&& doc.DocType != ARDocType.CashReturn;
Il codice di cui sopra è scritto nella ARInvoice_RowSelected
gestore del grafico, in cui ARInvoice
è il primario DAC e il tipo di record anagrafici della pagina. Pertanto, ogni volta che viene selezionato ARInvoice
, l'elemento della scheda diventerà visibile o invisibile a seconda del tipo di documento.
Questo metodo ha i suoi limiti troppo:
- Si deve sempre ricordare che non è sufficiente per disattivare AllowSelect, si dovrebbe anche abilitare quando necessario. Quindi è necessario valutare questa proprietà ogni volta che viene chiamato l'evento.
- Questo metodo non sembra funzionare senza impostare la proprietà di PXTabItem su false (vedere sopra).
Fonte: http://asiablog.acumatica.com/2016/05/hiding-tab-from-user-interface.html
- 1. Come nascondere una scheda nell'interfaccia utente di avvio angolare utilizzando ng-show/ng-hide
- 2. Materiale angolare - Aggiungere dinamicamente scheda e passare a quella scheda
- 3. Android come nascondere la scheda da TabLayout
- 4. Come modificare dinamicamente il titolo della scheda
- 5. Come nascondere framelayout dinamicamente in Android
- 6. Come nascondere/mostrare dinamicamente i widget?
- 7. Interfaccia utente JQuery: disabilitare la scheda fisarmonica?
- 8. Nascondere una scheda in una barra delle schede in iOS (Swift)
- 9. Interfaccia utente jQuery - Datepicker - Nascondere anno
- 10. mostrare dinamicamente/nascondere div sulla base degli input di testo
- 11. Come nascondere un fieldset (scheda) in Plone aggiungere/modificare forma
- 12. Come faccio a mostrare e nascondere dinamicamente un intero TabContainer usando DOJO?
- 13. Come mostrare dinamicamente/nascondere campo in SilverStripe ModelAdmin
- 14. C'è un modo per nascondere la barra delle schede di JTabbedPane se esiste una sola scheda?
- 15. Come disattivare o nascondere l'Apri in opzione di una nuova scheda per i collegamenti ipertestuali
- 16. Qual è il modo migliore per nascondere una scheda in un TabNavigator?
- 17. Consentire a un utente di selezionare una cartella su una scheda SD
- 18. Asp.Net MVC carica una vista parziale utilizzando ajax da una scheda dell'interfaccia utente JQuery
- 19. Aggiungi righe/colonne dinamicamente a una griglia
- 20. dinamicamente Scrolling una textarea
- 21. come nascondere l'utente della vista utente non usa la vista?
- 22. Spazio bianco al posto di una barra di scheda nascosta
- 23. Aprire un'app Chrome in una scheda
- 24. Preselezione della scheda abilitata ajax nelle schede dell'interfaccia utente jquery
- 25. Come mostrare/nascondere una vista in EmberJS
- 26. Come nascondere determinati campi nel modulo Modifica utente in Drupal?
- 27. Devo nascondere il segreto utente OAuth memorizzato dall'app Android?
- 28. Interfaccia utente di Jquery - ricaricare la scheda selezionata?
- 29. La scheda dell'interfaccia utente Jquery non funziona in AngularJS
- 30. Schede dell'interfaccia utente jQuery: visualizza l'indice della scheda corrente