2013-03-03 57 views
0

我有一個sitecore項目,「category」,它有一個下拉鍊接填充「產品類型」模板列表。Sitecore - 驗證一個下拉列表值更改事件

每個類別都可以有一個「產品類型」。 (鞋類將會有一個鞋子模板,鞋類也會有鞋子模板,袋子類別也會有一個袋子模板)。

問題:

  1. 這些類別應該能夠標記相關的類別。因此,我需要顯示一種控制列表的種類列表,只允許選項選擇具有相同「產品類型」的類別。 在「鞋類」類別下,我需要有「拖鞋」。 我該怎麼做?

  2. 將「拖鞋」選擇爲「鞋子」的相關項目後,如果用戶試圖更改「拖鞋」中的「產品類型」下拉鍊接值,該如何警告用戶該產品類型已經存在鏈接到另一個類別? (對儲蓄類項目確認。)

希望這是在Sitecore的相關項目的一個常見問題,但我無法找到一個解決方案。

回答

1

您的第一個問題「標記相關類別」對我而言並不清楚您想要用它達到什麼目的。 但是,如果我正確理解了您,您希望在Category-item中選擇一個product-type-template,讓編輯器在Category-item下面創建所選producttype的產品。

您可以通過在類別項目上使用item:saved event來解決此問題: - 首先檢查是否保存類型爲Category的項目,但檢查模板。 - 如果是Category-Item,請閱讀product-type droplink的值,並將該模板添加到Category項目的插入選項。

對檢查相關項目的第二個問題只能通過使用item:saving事件以相同的方式處理。不是項目:已保存的事件,因爲您希望在保存項目之前執行檢查,因此您可以通過Sitecore.Web.UI.Sheer.SheerResponse.Alert()方法取消保存並顯示消息框。 在項目:保存事件中,您需要通過LinkDatabase方法Globals.LinkDatabase.GetReferrers()檢查當前項目是否有一個或多個引用鏈接(鏈接到此項目的項目)。

對此使用驗證而不是項目:保存事件不是有用的,因爲驗證事件只會引發警告並保存項目。

另一個帶有示例代碼的好鏈接是John West的this blog