如何在MOSS 2007中隐藏新列表项页面中的字段?

时间:2011-07-08 14:44:47

标签: sharepoint list sharepoint-2007

我正在尝试为我们的团队网站设计一个列表,作为我们跟踪组织其他部门工作请求的地方。

该列表包含一些来自其他团队的人员,无需或无法提供相关信息。例如,我有一个已完成%的列,另一个用于在我的团队中分配请求的列,依此类推。我不希望任何人在第一次按下“新建”按钮时能够为这些字段中的任何字段输入值。我有什么方法可以隐藏这些特定字段吗?如果不隐藏,只需禁用?

我尝试过的事情:

来自此处的路线:http://nickgrattan.wordpress.com/2008/12/02/changing-order-hiding-columns-in-new-edit-forms/ 它告诉您启用内容类型管理,并允许您隐藏一些列。但是,完全隐藏了所有菜单中的列。我希望某些特定用户可以编辑这些列。我想实际使用它们,但外面的用户无法使用它们。

注意:遗憾的是,由于有关Intranet的公司政策,我对此任务的工具非常有限。我无法编写任何代码,我无法使用Sharepoint设计器,无法上传任何第三方解决方案而且我们没有InfoPath。所以基本上我只限于网络界面和我可以作为网站所有者访问的东西。

3 个答案:

答案 0 :(得分:1)

对我来说,唯一的选择,仍然不能完全满足您的需求,是在内容编辑器webpart中使用javascript来隐藏这些字段。但是,任何知道他们正在做什么的人都可以使用浏览器中的控制台再次显示它们。

您可以使用对象模型将字段的“show in newform”选项设置为false,但这并不包括向某些用户显示该字段。

要仅为某些用户显示列并防止其他人使用JS更改页面并再次启用它们,您可能需要创建自己的ListFieldIterator控件...

答案 1 :(得分:1)

使用SPServices http://spservices.codeplex.com/。获取当前登录用户组(您可以使用SPServies执行此操作),如果用户在受限制的组中执行javascript并隐藏/禁用字段。

您可以使用内容编辑器webpart并编写javascript。这里不需要SPD。

更新

您可以使用以下功能:

function DisableField(title){    

var collection = $('td.ms-formbody span').children();

$(collection).each(function(index,object)
{
    if($(object).attr('title').indexOf(title)>=0)
        {
            $(object).attr('readonly',true);
            $(object).css('background-color','#dcdcdc');

        }

});

}

答案 2 :(得分:0)

我找到了一个解决方法,虽然不完美,但效果还不错。使用我采用的初始方法,如上所述,我设置了我不希望其他用户看到隐藏的字段。它们无法以任何形式显示或以任何方式通过默认视图访问。然后我创建了一个新的“管理”视图,它是一个数据表视图并启用了所有列。所以现在我可以在基于数据表的视图中查看和编辑所有字段,但它们不会出现在新项目表单中!万岁!