in

DotNetSide

Dot Net South Italy Developers User Group

Tips

Interfaccia Inserimento e ReadOnly

Autore: Francesco Guadagno

Molto spesso mi son trovato difronte al semplice “problema” di dover gestire una interfaccia o form di inserimento, nella doppia modalità Inserimento e sola visualizzazione.

Il problema, se pur semplice, ci costringe a iterare sulle varie proprietà “ReadOnly” ed “Enabled” dei vari controlli impostando il valore che ci serve in quel momento.

Se sfruttiamo la ControlCollection di un qualsiasi WebControl, è possibile fare qualcosa di questo tipo:

1    public static void EnableFields(Control c, bool bEnabled){
2        foreach (Control c1 in c.Controls){
3            string sType = c1.ToString();
4            switch (c1.ToString()){
5                   case "System.Web.UI.WebControls.TextBox":
6                        ((TextBox)c1).Enabled = bEnabled;
7                        break;
8                   case "System.Web.UI.WebControls.DropDownList":
9                        ((DropDownList)c1).Enabled = bEnabled;
10                       break;
11                  case "System.Web.UI.WebControls.CheckBox":
12                       ((CheckBox)c1).Enabled = bEnabled;
13                       break;
14                  case "System.Web.UI.WebControls.ListBox":
15                       ((ListBox)c1).Enabled = bEnabled;
16                       break;
17             }
18             if (c1.HasControls()){
19                  EnableFields(c1, bEnabled);
20             }
21       }
22   }

Si tratta di una funzione ricorsiva che accetta in input un qualsiasi controllo, ad esempio la tabella che contiene tutti i webcontrols, e che ripete la procedura per ogni controllo trovato nella ControlCollection.

Le operazioni effettuabili sono le più disparate. Possiamo in questo modo pensare di gestire anche problematiche come visibilità, abilitazioni di Validator,Reset form, ecc.

Only published comments... Jun 08 2006, 01:03 PM by VitoA
Filed under:
Powered by Community Server (Commercial Edition), by Telligent Systems