In questi giorni mi è capitato di dover nascondere dei campi dalle form di un template di lista sharepoint. Se questo l'avessi fatto io dall'inizio, la cosa sarebbe stata abbastanza facile, in quanto, nella template definition esistono gli attributi ShowInEditForm, ShowInNewForm ... da applicare ad ogni campo della nostra lista.
Nel mio caso, però, la lista era stata gia creata e modificata e quindi non potevo metter mano in quei file.
Ho cercato un pò su google come potermi muovere e ho trovato questo.
In pratica, mi dicono di apire Sharepoint Designer, fare una copia della form che voglio editare ed inserire un controllo specifico di sharepoint (custom list form) che mi permette di modificare il modulo di visualizzazione a mio piacimento. Peccato però, che quando io cerchi di settare la mia nuova form come form di edit (per esempio), la mia modifica non venga accettata.
Ecco quindi che ho dovuto lasciar perdere sharepoint designer e mi son creato una semplice consol application, che grazie al modello ad oggetti fornito da sharepoint, mi permette di modificare quelle proprietà dei campi di una lista che non possono essere modificate tramite interfaccia grafica.
SPSite site = new SPSite("http://locahost");
if (site != null)
{
SPWeb web = site.OpenWeb();
SPList list = web.Lists["ListName"]];
if (list != null)
{
list.Fields["FieldName"].ShowInDisplayForm = false;
list.Fields["FieldName"].ShowInEditForm = false;
list.Fields["FieldName"].ShowInNewForm = false;
list.Fields["FieldName"].Update();
list.Update();
}
}
In questo modo ho nascosto il campo "FieldName" dalle form di edit, new e display della mia lista "ListName".
Niente di più facile no ?