【问题标题】:SharePoint 2010 - Customizing the rendering and behavior of a List fieldSharePoint 2010 - 自定义列表字段的呈现和行为
【发布时间】:2011-07-22 20:44:49
【问题描述】:

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

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

有什么想法、意见或建议吗?有谁知道为什么我无法切换“控制模式”的专栏?

【问题讨论】:

  • 没有冒犯,但是 TL;DR; - 也许你可以把你的问题缩小一点,也许分成多个问题?上面的问题很难得到答案。

标签: sharepoint sharepoint-2010


【解决方案1】:

我不认为我完全理解你的情况。一些代码示例可能会有所帮助。

但无论如何,听起来您想要对用户字段进行一些重度自定义。在这种情况下,您可能想看看创建一个具有所有优点和缺点的自定义字段。看看 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.

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多