2

请求

我想将成员添加到我们公司的部门,但是我们公司有更多的办公室,每个办公室都有自己的部门,所以我们需要先组织一下,然后尝试将每个成员分配到其部门,以便他们只有访问权限他们自己的部门。

作为 Umbraco 内容的部门概述:

Root Node
-Office 1
-- Department1.1
-- Department1.2
-Office 2
-- Department 2.1
-Office 3
-- Department 3.1
-- Department 3.2
-- Department 3.3

现在,如果我添加一个用户,我希望一个属性选择办公室,另一个属性选择部门。

可能的解决方案

到处检查,我发现我可以使用 Umbraco 中的UltimatePicker类型创建 Office 属性,创建一个链接到父节点的自定义数据类型,然后在我的 MemberType 中创建一个属性。这将在“根节点”下显示办公室并将成员链接到其中之一。

现在,要制作我所看到的部门属性,可以通过某种方式使用自定义手动编码属性,添加用户控件并使用它来动态显示办公室子项(我还没有尝试过,我在推理) .

但是我担心第二个属性将依赖于第一个属性,并且当我尝试在我的用户控件中创建实现umbraco.editorControls.userControlGrapper.IUsercontrolDataEditor的自定义属性时,它只允许我保存一个值,而不是两个他们。这很有意义,因为这应该是 A 属性,而不是一堆。

我的问题

现在,拥有这 2 个自定义属性的最佳方式是什么,并确保万一我更换办公室,部门也会被刷新?

目前最好的疯狂想法

到目前为止,我只能想象创建2个用户控件,每个属性一个,并在每次更新办公室时手动清理部门,虽然我不知道这是否可能(我真的可以动态获取部门吗?我可以清理 dep. 属性 FROM office 属性 usercontrol?),我希望将它们放在一起以简化代码。

4

1 回答 1

1

如果关系很关键,并且您需要防止用户意外选择不属于办公室的部门,那么您可以创建一个包含两个下拉菜单的用户控件。第一个菜单显示办公室,第二个菜单仅在选择办公室后才填充(最好通过 ajax 调用)。

使用 umbraco api 检索办公室和部门的代码相对简单。

然后,用户控件可以将每个的 id 保存到 xml 或逗号分隔的列表中。

或者,您可以只允许用户选择一个部门,而部门的选择暗示了办公室。您可以使用 uComponent 的多节点选择器并将节点选择过滤为仅部门文档类型。然后,开销就在 UI 代码中,您必须从部门中计算出办公室。

为了解决这个问题,您可以有一个标签属性来简单地存储部门办公室的 ID。然后可以使用 OnSave 事件处理程序保存 Office ID。

于 2013-01-24T11:25:06.870 回答