Disabilitare controlli

martedì 21 dicembre 2004 - 17.07

mon78 Profilo | Junior Member

Ciao ho 1 problema: ho una web form con alcuni web control; quando l'utente accede, egli può accedere in sola lettura o in lettura/modifica; se accede in lettura egli non può modificare nulla; dovrei disabilitare uno ad uno tutti i controlli da codice, o c'è qualke modo per disabilitare tutta la pagina?Grazie mille.

Brainkiller Profilo | Guru

No una pagina web è una cosa un po' diversa da una applicazione standard a finestra.
Per disabilitare textbox o pulsanti puoi utilizzare un Javascript che fa una foreach su ogni controllo e ove possibile lo disabilità, oppure fare la stessa cosa server side facendo un post back e cambiando lo stato enabled a false.

ciao
david

mon78 Profilo | Junior Member

Grazie, ma il foreach in Javascript si può fare su ogni controllo di tipo server?C'è qualke riferimento a proposito, poikè nn sono esperta in javascript?Se invece devo disabilitare i controlli server, per ognuno devo porre Enabled=False? Grazie

cnnmax Profilo | Junior Member

Ciao. Io ho fatto così
Mi leggo tutti i controlli dela pagina e se è un controllo che devo rendere readonly lo setto.

Codice in VB ma penso valga anche in c#

For Each oCtlChild In Page.Controls
' Si verifica il tipo di ogetto
if oCtlChild è quello che mi interessa Then
oCtlChild.Readonly = True
end if
Next

In C# si dovrebbe scrivere così :

foreach (System.Web.UI.Control oChildControl in Page.Controls)
{
oCtlChild.Readonly = true;
}

Ciao ;-)

mon78 Profilo | Junior Member

Grazie, ma il problema è che mi esce l'errore System.Web.UI.Control non contiene una definizione per ReadOnly. Nn so ke fare.

cnnmax Profilo | Junior Member

Infatti non tutti i controlli hanno la proprietà readOnly, devi testare se l'oggetto che leggi nel foreach ha la proprietà che ti interessa.

In VB
' oCampo è l'oggetto che stai leggendo

Dim props As System.ComponentModel.PropertyDescriptorCollection
props = System.ComponentModel.TypeDescriptor.GetProperties(oCampo)

For Each oProp As System.ComponentModel.PropertyDescriptor In props
If oProp.Name = ""ReadOnly Then
oCampo.ReadOnly = True
Exit For
End If
Next
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5