vista umbral supera puede porque permisos online mostrar lista elementos columna autonumerica sharepoint

supera - umbral de la vista lista sharepoint online



¿Cómo administrar el control de acceso basado en columnas en listas de Sharepoint? (2)

Por lo que sé, eso no está disponible en la plataforma estándar. Lo que puedes hacer, por otro lado, es fabricar tu propio control de campo

Entonces, en fieldtypes.xml personalizado

<FieldTypes> <FieldType> <Field Name="TypeName">MyInteger</Field> <Field Name="ParentType">Integer</Field> ... <Field Name="FieldTypeClass">xxx</Field> </FieldType>

y en sitecolumns.xml

<Field ID="xxx" Name="xxx" DisplayName="xxx Description="xxx" Group="xxx Type="MyInteger" DisplaceOnUpgrade="TRUE" />

y en su control de campo

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

y en MyIntegerControl puedes hacer lo que quieras (muchas anulaciones), pero un ejemplo es:

protected override void CreateChildControls() { base.CreateChildControls(); if (this.ControlMode == SPControlMode.New || this.ControlMode == SPControlMode.Display) { // check that use is admin and display value } }

Estoy creando un portal de seguimiento de problemas basado en Sharepoint. Los usuarios deben poder agregar entradas, pero en la entrada quiero que una columna solo sea visible para un grupo específico de usuarios (Administradores). ¿Hay alguna manera de establecer el control de acceso basado en columnas?


También puede hacer esto registrando una acción personalizada y cambiar el esquema de la vista de lista dinámica

<CustomAction Id="CustomAction" GroupId="SiteActions" Location="Microsoft.SharePoint.StandardMenu" Sequence="1003" ControlAssembly="$SharePoint.Project.AssemblyFullName$" ControlClass="CustomAction.ColumnPermissionAction"/>

y en tu clase de control:

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); } } } } } } }