2012-07-31 71 views
0

我已經與我的自編程CMS一起工作,但在Umbraco上有新增功能。我的工作一把umbraco 4.7與.NET框架4,想有點創建內容結構是這樣Umbraco中的自定義自動增量字段

 
MaleModels 
|--------------Model (Can be multiple) 
       |----------- Model Id (Problem) 
       |----------- Name 
       |----------- DOB 
       |----------- etc... 

我需要爲每個模型創建節點,並希望一種獨特的模式ID分配給每個模型,但找不到可用於自動遞增字段的任何數據類型(正如我在使用SQL編寫自定義.NET代碼時所做的那樣)。我知道我可以使用@pageId,但是我希望模型ID從100開始,並且只爲每個模型添加單個增量。

需要幫助...

回答

1

一種選擇是,你可以在處理一個自定義庫中的Document.AfterPublish事件,可以創建後自動遞增值添加到「自動識別」字段,並保存/發佈再次。您可能需要保留當前增量id值的計數器(例如在上面的「MaleModels」節點中),以便您不必每次查詢所有模型以查找最高ID。

這裏有一個博客帖子大約在一把umbraco事件,可能與細節幫助:http://www.bo-mortensen.dk/2011/10/umbraco-more-event-goodness/

+0

感謝您的回覆,經過一番更多的分析,我有一個想法。我不應該創建另一個表** ModelInformation [ModelId PK(AutoIncrement),ModelNodeId(來自cms_Content的FK)] **,並且如您所述,我可以使用Umbraco事件模型來執行此任務。它是存儲Umbraco節點的nodeIds的** cms_Content **表。如果是,那麼我可以使用Umbrao事件模型來獲取「創建的節點ID」並將其存儲在ModelInformation表中。下一次遇到Model節點時,我將採用它的nodeId並從ModelInformation表中找到相應的ModelId。 – 2012-08-05 03:46:38

+0

是的,你當然可以添加另一張表並以此方式存儲它。在Umbraco Admin區域看到這個ID很重要嗎?您可能想創建一個簡單的UserControl數據類型,在管理區域的頁面上顯示該ID。 – BeaverProj 2012-08-06 21:03:35

+0

是的,最好在管理區域中顯示模型ID,實際上在標籤中顯示。事實上,我在[www.nibble.com](http://www.nibble.be/?p=24)上找到了一個很好的項目,你還有什麼可以分享的? – 2012-08-10 13:32:41

0

你爲什麼不創建「自定義用戶控件」其中有數據庫,您可以創建第一列是自動增量和第二列的NodeId,一旦你做到這一點,請將其添加到Page_Load()事件的數據庫中,確保檢查NodeId是否存在,然後不插入記錄。

現在,創建作爲數據類型的一把umbraco然後物業使用,用戶控件將獲得自動遞增的數字,當你創建一個用戶控件將插入紀錄的NodeId並會產生自動遞增並顯示到page_load()<asp:Label>節點,

它會在每次加載頁面時加熱,所以你可以做的是,你將需要檢查每次進入數據庫是否存在NodeId存在或不存在,否則不插入,否則插入數據庫,你可以創建你的自動增量,

你需要記住,將加熱每一次數據庫只是確保與perfor明智的你需要看看它。

如果您有進一步的問題,請讓我知道。

感謝

ANKUR