SharePoint:以编程方式隐藏列表字段

时间:2008-11-14 14:58:30

标签: sharepoint

我正在尝试隐藏列表中的“标题”字段。 这似乎不起作用:

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

我做错了什么?

7 个答案:

答案 0 :(得分:12)

试试这个:

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

答案 1 :(得分:2)

除非CanToggleHidden的值为true,否则上述设置Hidden true的示例均不起作用。问题是,CanToggleHidden只有一个Get,而不是一个Set,所以你必须执行一个激进的&#34; SharePoint编程体操特技&#34;使用反射首先将CanToggleHidden从false翻转为true。完成后,您可以将Hidden更改为true(或返回false)。网上有很多例子(尽管并非所有例子都是正确的)。如果需要,我可以挖掘一个有效的PowerShell示例。

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.
}

答案 2 :(得分:0)

确保您正在抓取 SPWeb实例。

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

答案 3 :(得分:0)

我相信列表中字段的可见性由用户“获取”的默认视图控制。你不想修改视图吗?我知道您可以获取列表的视图以及默认视图。

我只是在这里吐痰......

答案 4 :(得分:0)

使用隐藏属性时需要付出代价。

我们发现隐藏设置列会删除通过代码删除它的功能。

答案 5 :(得分:0)

尝试这个可行的... 标题字段命名为LinkTitle ... 其他字段可以以相同的方式隐藏。

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

答案 6 :(得分:0)

上面的解决方案是在任何地方隐藏场地。它也将隐藏在列表的列概述中。

如果您只想隐藏特定列表中的字段。或者,如果您仍然使用列表设置页面操作字段(设置回可见)。您需要在列表的“FieldLinks”属性中设置字段的“隐藏”属性。

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