2013-01-24 151 views
2

請求添加自定義屬性依賴於另一個一把umbraco

我想大家加入到他們的部門在我們的公司,但我們公司有更多的辦事處,每個辦事處自己的部門,所以我們需要組織首先嚐試將每個成員分配給其部門,以便他們只有權訪問他們自己的部門。

部門概述,一把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 

現在,如果我添加了一個用戶,我想一個屬性來選擇辦公室和另一選擇的部門。

可能的解決方案

檢查在這裏和那裏,我已經看到了,我可以用UltimatePicker類型一把umbraco創建自定義的數據類型鏈接到父節點使Office屬性,然後屬性在我的MemberType中。這將顯示「根節點」下的辦事處並將該成員鏈接到其中的一個。

現在,爲了使我看到的部門屬性可以使用自定義的手動編碼的屬性,添加一個usercontrol並使用它來動態顯示辦公室的孩子(我還沒有嘗試過,我理論化)。

但我擔心的是,第二個屬性將取決於第一個,當我試圖在我的用戶創建我實現umbraco.editorControls.userControlGrapper.IUsercontrolDataEditor自定義屬性只允許我保存一個值,而不是其中的兩個。這是有意義的,因爲這應該是一個屬性,而不是一堆。

我的問題

現在,什麼是有那些2個自定義屬性,並且確保最好的辦法是,在情況下,我改變了辦公室的部門也將刷新?此刻

最瘋狂的想法

直到這一刻,我只能想象創造200個用戶控件,一個爲每個屬性,並手動每個辦公室被更新時,清潔部門,雖然我不t知道這是否可能(我真的可以動態地獲得部門嗎?我可以清理dep。property FROM office屬性usercontrol嗎?),我寧願將它們放在一起以簡化代碼。

回答

1

如果關係是關鍵,並且您需要防止用戶意外選擇不屬於辦公室的部門,則可以創建包含兩個下拉菜單的單個用戶控件。第一個菜單顯示辦公室,第二個菜單隻在選定辦公室後才填充(最好通過ajax調用)。

檢索辦公室和部門的代碼將使用umbraco api相對簡單。

usercontrol然後可以將每個ID保存爲xml或逗號分隔列表。

或者,您可以只允許用戶選擇一個部門,而辦公室則由部門的選擇來暗示。您可以使用uComponent的multi-nodepicker並將節點選擇過濾爲僅部門文檔類型。那麼開銷就在UI代碼中,你必須從部門中找出Office。

爲了解決這個問題,您可以使用標籤屬性來存儲部門辦公室的ID。 Office ID可以使用OnSave事件處理程序保存。

+0

啊哈!謝謝,這就是我想要做的,但不知道如何同時保存兩個值... xml或逗號分隔,爲什麼我沒有想到這一點!!?謝謝。 –

+0

我擴展了我的答案以顯示替代方案。將兩個值存儲在一個屬性中的問題(您可能會發現)是,它可能很難根據第二個值進行任何過濾/搜索/分組等。 – Digbyswift

+0

你是對的過濾/搜索/等。如果我製作2個物業,但只讓您選擇部門,該怎麼辦?我可以將辦公室隱藏在會員編輯選項中,但已將其創建,以便在選擇部門時將辦公室保存在一個字段和部門中。在另一個。 –