重写表单字段呈现逻辑,添加编辑权限控制----这是这个方案实现的核心了。

wss有一套模板的机制,系统的一些控件,包括一些webpart,如果UI比较复杂,都会采用模板来实现,详细请参考:
WSS3.0开发--页面定制(1)--修改列表的表单页面

列表的表单页面,包括查看dispform.aspx,editform.aspx,newform.aspx都采用了一个模板:ListForm,
这个模板嵌入了一个控件--Microsoft.SharePoint.WebControls.ListFieldIterator,这个控件枚举列表的所有字段,生成编辑页面。
那么我们的工作核心就是重写这个ListFieldIterator控件。

通过Reflector查看ListFieldIterator的代码,幸运的是,它不是internal的,那么我们可以继承这个控件实现新的逻辑。不过不幸得是,
ListFieldIterator内部引用了TemplateContainer控件,这个控件的某些重要属性是internal的,我们的代码没法直接设置,
不过我们还有一招:采用反射。

下面是ListFieldIterator原始的CreateControl方法代码:
MOSS字段编辑权限控制方案(3)-重写表单字段呈现逻辑[SharePointPermission(SecurityAction.Demand, ObjectModel=true)]
MOSS字段编辑权限控制方案(3)-重写表单字段呈现逻辑
protected override void CreateChildControls()
下面是重写后的ListFieldIterator:
    }
对比以上两个类的CreateControl方法,相信大家应该了解这个解决方案的核心了。

然后,编写新的模板文件:
>

OK,我们已经给系统“所有”表单添加了了新的呈现逻辑--只有编辑权限的用户才能可以看到编辑控件。

本系列的所有文章:
MOSS字段编辑权限控制方案(4)-打包解决方案






相关文章:

  • 2022-12-23
  • 2021-06-10
  • 2021-12-24
  • 2021-07-11
  • 2022-01-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-06
  • 2021-09-30
  • 2022-01-13
  • 2022-12-23
  • 2021-11-11
  • 2021-10-19
  • 2022-12-23
相关资源
相似解决方案