我的要求是限制用户根据其给定的组/权限查看/添加/编辑列表的字段。为了达到这个目的,按照我的理解,我必须生成自定义列表表单。如果有人可以帮我定制NewFrom.Aspx和代码,我们可以检查当前用户组/权限并隐藏他不应该访问的字段。
我在谷歌搜索后得到了解决方案,并且在创建新的自定义列表表单后考虑应用以下内容。我想知道这种方法是否足够好,或者给它任何最佳解决方案。
var web = SPContext.Current.Web;
web.AllowUnsafeUpdates = true;
web.Update();
var lists = web.Lists["SomeList"];
var f = lists.Fields["SomeField"];
if(){ //to check if user is in role
f.ShowInEditForm = false;
f.ShowInNewForm = false;
f.Update();
}
相同的列表将用于交叉所有用户,因此我认为上述解决方案可能不是最佳的。
提前致谢。
答案 0 :(得分:1)
由于 SharePoint不支持列级权限,因此有一些第三方工具可用于列级权限:
对于自定义NewForm :
您可以使用以下代码替换默认的NewForm webpart和自定义webpart:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb currentWeb = (SPWeb)properties.Feature.Parent;
try
{
SPLimitedWebPartManager NewForm = currentWeb.GetLimitedWebPartManager("Lists/listname1/NewForm.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
AddWebPart(NewForm);
}
catch (Exception)
{
throw;
}
}
protected void AddWebPart(SPLimitedWebPartManager MainPage)
{
MainPage.WebParts[0].Hidden = true;
MainPage.SaveChanges(MainPage.WebParts[0]);
try
{
var linqqry = from wp in MainPage.WebParts.Cast()
where wp.GetType() == typeof(Webpart1.Webpart1)
select wp;
if (linqqry.Count() == 0)
{
//Create an instance of WPMenu Webpart and add in a Webpart zone
Webpart1.Webpart1 wpWebPart = new Webpart1.Webpart1();
MainPage.AddWebPart(wpWebPart, "Main", 0);
MainPage.SaveChanges(wpWebPart);
}
}
catch (Exception ex)
{
}
}