我正在尝试隐藏列表中的“标题”字段。 这似乎不起作用:
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
我做错了什么?
答案 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;