隐藏自定义列表中的某些栏
在csdn聊天记录http://chat.csdn.net/chathistory/ViewStatements.aspx?TopicId=134中找到的这篇文章,觉得非常好,翻译,记下来。
原文地址:http://msd2d.com/Content/Tip_viewitem_03NoAuth.aspx?section=Sharepoint&id=82AAB2F0-B356-453A-A5FB-00EF39E6562E
我最近遇到客户提出的很有趣的一个关于Windows SharePoint Services的问题。要求我快速解答并且不能增加任何的代码量。下面是我巧妙的(个人认为)解决方案。
在我们使用由WSS构建的网站时,往往会遇到这样的需求。某些用户有权访问一个特定的站点,并且可以进入其下面的某个自定义列表。我们希望这个用户可以查看所有的栏,但是只能更新列表项里其中的某一部分栏的内容。我们可以如下设置:
1、首先进入一个SharePoint自定义列表,并且我们假设您已经添加了一些列表项
2、在我们添加完一个新项后,点击该项的编辑菜单,将进入编辑页面EditForm.aspx
3、在 FrontPage 2003中打开这一页,然后利用文件另存为保存一份副本。可以起名叫EditAdminForm.aspx。这个版本是允许完全访问列表项的,所以一定要保存好。
4、回到编辑页面EditForm.aspx ,重新在FrontPage中打开。
5、选择"Main"Web部件区域中的那个ListFormWebPart,右键,选则“自定义SharePoint列表表单”
6、在每个在 您希望隐藏的栏里,点击对应行中的标签单元格。在FrontPage的导航条上,您可以看到选择HTML标记的地方,点击最近的<TR>标记,整行将被选中。
7、在下拉列表中选择“编辑标记”
8、在出现的快速标记编辑器中将<TR>标记改为<TR style=’”display:none”>后保存。这个操作将把这一行隐藏起来。
9、在每个要隐藏的行上重复上面的步骤。
10、在EditForm.aspx页的某处放置一个隐形对象。这里我用了一个无边框的透明的文本框放到页面左侧。为其指定下面的URL地址:“javascript:location.href=’EditAdminForm.aspx’+location.search”
这段脚本将传递相应列表项的ID给EditAdminForm页面。管理员可以通过培训被告知从哪里找到隐藏的完整栏的访问地址。而一般用户仅仅能看到显示出来的栏。最重要的是我们并没有更改SharePoint默认的保存链接就做到了这一点。
进一步发挥,我们使用同样的方法也可以对NewForm.aspx和DispForm.apx做处理,就能实现更多功能了。