2008-11-14 21 views
8

Estoy tratando de ocultar el campo "Título" en una lista. no parece que esto funcione:SharePoint: crear un campo de lista oculto mediante programación

SPList myList; 
... 
SPField titleField = myList.Fields.GetField("Title"); 
//titleField.PushChangesToLists = true; <-- doesn't seem to make a difference 
titleField.ShowInEditForm = false; 
titleField.ShowInDisplayForm = false; 
titleField.ShowInNewForm = false; 
titleField.Update(); 
//myList.Update(); <-- make no difference 

¿Qué estoy haciendo mal?

Respuesta

12

Prueba esto:

field.Hidden = true; 
field.Update(); 
+2

eso es embarazoso. Esto es exactamente lo que necesito. Todavía no entiendo para qué sirve la propiedad 'ShowInEditForm', pero al menos puedo seguir adelante ... Gracias (en mi defensa, no he dormido toda la semana, recién nacido en la casa). – vitule

+0

en caso de que desee ocultar solo del formulario de visualización, entonces necesita esa propiedad. – TinTin

0

Asegúrese de estar tomando una nueva instancia SPWeb.

using (SPSite site = new SPSite(webUrl)) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     try 
     { 
      //... Get SPList ... 
     } 
    } 
} 
+0

Eso no es todo. ¡Gracias! – vitule

0

Creo que la visibilidad de los campos en las listas está controlada por la vista predeterminada que el usuario "obtiene". ¿No quieres modificar la vista? Sé que puede obtener las Vistas de una lista, así como la vista predeterminada.

Sólo soy escupir-Balling aquí ...

+0

mi principal preocupación es eliminar el campo "Título" del formulario nuevo y del formulario de edición. – vitule

0

Hay un precio que se paga cuando se utiliza la propiedad Oculto.

Se ha descubierto que establecer una columna oculta eliminará la posibilidad de eliminarlo mediante el código.

0

intente esto, esto funcionará ... El campo de título se llama LinkTitle ... otros campos se pueden ocultar de la misma manera.

SPView view = list.DefaultView;  
if(view.ViewFields.Exists("LinkTitle")) 
{  
    view.ViewFields.Delete("LinkTitle");  
    view.Update();  
} 
0

La solución anterior es para ocultar el campo en todas partes. También estará oculto en la vista general de la columna de su lista.

Si solo quiere ocultar el campo en una lista en particular. O si todavía manipula el campo (volver a establecerlo como visible) usando la página de configuración de la lista. Necesita establecer la propiedad "Oculto" del campo en la propiedad "FieldLinks" de la lista.

myList.FieldLinks["SomeField"].Hidden = true; 
2

Ninguno de los ejemplos anteriores de configuración Oculto verdadero funcionará a menos que CanToggleHidden tenga un valor de verdadero. El problema es que CanToggleHidden solo tiene un Get, no un Set, por lo que debes realizar un radical "truco de gimnasia de programación de SharePoint" usando la reflexión para voltear primero CanToggleHidden de falso a verdadero. Una vez que haya hecho eso, puede cambiar Oculto a verdadero (o volver a falso). Hay muchos ejemplos en la web (aunque no todos están escritos correctamente). Si es necesario, probablemente pueda desenterrar un ejemplo de PowerShell que funcione.

if(field.CanToggleHidden) { 
    field.Hidden = false; 
} 
else 
{ 
    // display an error message or write to your favorite logging location 
    // explaining that there is no hope of changing the value of Hidden until 
    // CanToggleHidden changes to TRUE first. 
} 
Cuestiones relacionadas