2011-07-21 81 views
0

在我的SharePoint列表中,我有一个“雇员”列是用户类型字段。我想添加一些自定义的业务逻辑来处理这个领域。 当前,当用户添加一行时,我检查用户是否是Employee或Manager,然后相应地更改此列上的行为。我通过在我的自定义ListFieldIterator之前静态渲染我的自定义“ListForm渲染模板”中的字段来完成此操作。我只是使用标准的SharePoint FormField(和FormLabel)控件。在FormField控件的标记中,我为Load事件指定了FieldName(Employee)和一个事件处理程序。在此Load事件中,我将检查当前用户是否是Employee或Manager(使用两个不同的SharePoint组)。如果用户是员工,我将该字段的值设置为当前用户(此部分完美工作)。我也想改变这个领域,所以它不能被修改。我想我可能只是将字段上的控件模式(在OnLoad事件处理程序的代码中)更改为显示,但出于某种原因,这不起作用。该领域仍然使用完整的人员选择器编辑器进行渲染。我是否很快就不改变字段控制模式?或者这是不是正确的方法?我想要放入的另一个逻辑是,如果用户是管理员,我希望允许该用户从员工的列表(SharePoint组)中选择人员。仅使用人员选择器并将可选用户限制到该组可能更容易。 (我想我可以通过SelectionGroup属性来做到这一点)。尽管如果我只提供一个用户下拉列表会更好,我可能会使用隐藏的下拉列表来显示和显示我可以使用的事件处理程序(处理事件selectedindexchanged)来拉取选定的值并填充(现在隐藏的)员工(用户)字段。这种方法有意义吗?假设所有这些都可以工作,我遇到的真正困难是将字段上的ControlMode(呈现)(当用户是员工时)更改为标签或某种只读控件,这是该字段在查看时呈现的方式行,这就是为什么我认为如果我可以欺骗控制思考它是在显示模式,那么它应该完美的工作!SharePoint 2010 - 自定义列表字段的呈现和行为

我仍在学习SharePoint,但我非常精通ASP.Net。这就是为什么我想在自定义渲染模板中保留我的自定义设置,使用后面的代码并充分利用我现有的技能集。

任何想法,意见或建议?有谁知道为什么我不能让列切换“控制模式”?

+0

没有违法,但TL; DR; - 也许你可以减少你的问题的大小,也许分裂成多个问题?上面很难得到答案。 – Ryan

回答

0

我不认为我完全了解你的情况。一些代码示例可以提供帮助

但无论如何,它听起来像你想用户字段的一些重度自定义。在这种情况下,您可能需要查看创建自定义字段的所有优点和缺点。看看MSDN:http://msdn.microsoft.com/en-us/library/gg132914.aspx

另一种选择可能是 - 如果你不想再使用此列在许多列表定义 - 你可以逃脱您的自定义呈现模板,并创建一个自定义创建/编辑形式为您实现该字段的特定编辑行为(带有一些SharePoint控件的纯ASP.NET)。以下是关于如何从SharePoint设计器获取自定义编辑表单的一个不错的步骤:http://community.bamboosolutions.com/blogs/sharepoint-2010/archive/2011/05/12/sharepoint-2010-cookbook-how-to-create-a-customized-list-edit-form-for-development-in-visual-studio-2010.aspx

我希望这有助于。 Kr。,Bernd。

相关问题