SharePoint PeoplePicker - 阻止用户删除值

时间:2014-07-31 13:58:05

标签: asp.net .net sharepoint sharepoint-2007

我有一个带有PeoplePicker控件的表单,我不希望用户能够编辑。

通常在这样的情况下将控件Enabled属性设置为false就足够了,但是我在回发时清除了值的问题(表单是非常自定义的,有很多子部分彼此互动的。)

我尝试了以下内容:

peoplePicker.EnableBrowse = false; peoplePicker.AllowTypeIn = false;

这解决了我几乎所有的问题,用户无法输入任何值,回发时不清除该值,但是,用户能够删除当前值。

如果不将Enabled设置为false,如何完全阻止用户修改控件值?

非常感谢任何帮助。感谢。

编辑:忘记提到这需要在服务器端完成,表单上有很多逻辑围绕用户AD组及其共享点权限,所以javascript实际上不是一个选项。

2 个答案:

答案 0 :(得分:1)

SharePoint人员选择器基本上是具有contenteditable属性的div。如果你可以注入javascript,这是解决方案:

http://www.stuartroberts.net/index.php/2012/03/05/quick-tip-5/

答案 1 :(得分:1)

您可以使用JavaScript / jQuery解决方案按下BackspaceDelete键的事件来阻止用户删除值。

解决方案

在指定EnableBrowseAllowTypeIn属性的同时,在PeopleEditor控件所在的页面上添加以下脚本:

$("body").on("keydown", "span", function(e) {   
  if ( (e.keyCode == 8 || e.keyCode == 46)  && e.target.id.indexOf("userPicker_upLevelDiv") > -1) 
     e.preventDefault(); 
  });