我正在基於Sharepoint進行問題跟蹤門戶。用戶應該能夠添加條目,但是在條目本身中,我希望一列只對特定用戶組(管理員)可見。有沒有辦法設置基於列的訪問控制?如何在Sharepoint列表中管理基於列的訪問控制?
5
A
回答
7
據我所知,在標準平臺上不可用。你能在另一方面做的是重本抑末自己fieldcontrol
所以在定製fieldtypes.xml
<FieldTypes>
<FieldType>
<Field Name="TypeName">MyInteger</Field>
<Field Name="ParentType">Integer</Field>
...
<Field Name="FieldTypeClass">xxx</Field>
</FieldType>
和sitecolumns.xml
<Field ID="xxx"
Name="xxx"
DisplayName="xxx
Description="xxx"
Group="xxx
Type="MyInteger"
DisplaceOnUpgrade="TRUE"
/>
,並在您fieldcontrol
public class MyInteger: SPFieldNumber
{
public MyInteger(SPFieldCollection fields, string fieldName)
: base(fields, fieldName)
{
}
public MyInteger(SPFieldCollection fields, string typeName, string displayName)
: base(fields, typeName, displayName)
{
}
public override BaseFieldControl FieldRenderingControl
{
[SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
get
{
Microsoft.SharePoint.WebControls.BaseFieldControl ctl =
new MyIntegerControl();
ctl.FieldName = InternalName;
return ctl;
}
}
}
而且在MyIntegerControl中,你可以做任何你想做的事情(大量覆蓋),但是一個例子文件是:
protected override void CreateChildControls()
{
base.CreateChildControls();
if (this.ControlMode == SPControlMode.New ||
this.ControlMode == SPControlMode.Display)
{
// check that use is admin and display value
}
}
0
你也可以做到這一點通過註冊一個CustomAction,並改變動態列表視圖模式
<CustomAction Id="CustomAction"
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Sequence="1003"
ControlAssembly="$SharePoint.Project.AssemblyFullName$"
ControlClass="CustomAction.ColumnPermissionAction"/>
,並在你的控制類:
class ColumnPermissionAction : Control
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
HideColumn();
}
private HideColumn(){
WebPart part=//find your web part
string colName="SecretColumn";
if(part is ListViewWebPart){
(part as ListViewWebPart).ListViewXml = (part as ListViewWebPart).ListViewXml.Replace(string.Format("<FieldRef Name=\"{0}\"/>", colName), string.Empty);
}else if(part is XsltListViewWebPart){
PropertyInfo property = typeof(DataFormWebPart).GetProperty("ListViewXmlDom", BindingFlags.NonPublic | BindingFlags.Instance);
if (property != null)
{
XmlNode xmlView = property.GetValue(part as XsltListViewWebPart, null) as XmlNode;
if (xmlView != null)
{
XmlNode node = xmlView.SelectSingleNode("//ViewFields");
if (node != null)
{
var field = node.SelectSingleNode(string.Format("FieldRef[@Name='{0}']", colName));
if (field != null)
{
node.RemoveChild(field);
}
}
}
}
}
}
}
相關問題
- 1. 訪問控制列表來管理提取的數據庫列
- 2. 包管理器控制檯中的訪問下拉列表
- 3. 訪問控制列表基礎
- 4. PHP複雜的基於角色的訪問控制列表
- 5. 訪問SharePoint列表
- 6. 如何在Google App Engine端點管理基於角色的訪問控制
- 7. 管理SharePoint文檔列表
- 8. Drupal訪問控制列表
- 9. ACL建模 - 如何管理訪問控制列表的「層次結構」?
- 10. 基於值列表的訪問列表框 - 在列上排序
- 11. 在TFS中訪問管理控制檯
- 12. Debian Lenny中的訪問控制列表
- 13. Lotus Notes中的訪問控制列表
- 14. joomla中的ACL(訪問控制列表)?
- 15. 使用Tivoli Identity Manager控制對SharePoint列表的訪問
- 16. 如何在控制器訪問散列
- 17. 基於另一個SharePoint列表的SharePoint列表
- 18. 基於迭代列表中的索引列表訪問項目
- 19. SSRS 401.3由於訪問控制列表導致拒絕訪問
- 20. 如何在firebase中實現基於角色的訪問控制
- 21. 如何在Grails中實現基於權限的訪問控制?
- 22. 訪問控制列表問題loopback.io
- 23. 在R中,如何限制基於另一個列表的列表列表?
- 24. Opencart命令列表管理控制器
- 25. Algolia中的訪問控制列表搜索列表
- 26. 如何訪問Nintex在SharePoint 2010中管理的假期
- 27. PHP訪問控制列表的鏈接
- 28. 如何訪問令牌additionalInformation以驗證基於表達式的訪問控制
- 29. 基於ContentType的SharePoint添加列表項
- 30. 的Sharepoint:基於另一個列表
我同意,自定義領域是要走的路。很好的例子! – 2009-06-16 03:12:31