SharePoint 2010 - 自定义“列表”字段的呈现和行为

时间:2011-07-21 17:32:53

标签: sharepoint sharepoint-2010

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

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

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

1 个答案:

答案 0 :(得分: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。