2012-05-16 147 views
1

我正嘗試檢索我正在構建的自定義Sitecore字段上的當前字段名稱。換句話說,如果我的自定義字段類型應用於名爲「元標題」的字段,我需要能夠檢索該名稱。如何在自定義字段類型中獲取當前字段名稱

This tutorial意味着你所要做的就是創建一個名爲FieldName的公共自動屬性,剩下的就是歷史......可悲的是,它看起來不起作用(FieldName總是空或空)。

任何想法?我試過從Sitecore.Web.UI.HtmlControls.ControlSitecore.Shell.Applications.ContentEditor.Text繼承而沒有運氣。

+0

你想用自定義字段來做什麼,需要你知道字段名稱? – techphoria414

+0

我的字段通過搜索Sitecore系統索引中的相似命名項目來檢查可能的重複項目標題。我需要知道字段名稱才能構建Lucene查詢。 –

+0

當你在控件中使用jquery操作(在我的情況下隱藏和取消隱藏)和一個項目中的多個字段時 - 當你不考慮名稱時隱藏和取消隱藏會影響所有字段,這也很有用。 –

回答

2

通過創建FieldID屬性,您應該可以訪問控件中的Field ID。這應該等同於定義該字段的模板字段項目的ID。因此,你可以通過

var fieldItem = Sitecore.Context.ContentDatabase.GetItem(this.FieldID); 
var fieldName = fieldItem.Name; 

獲取字段的名稱Sitecore的可以在你的控制設置可以在Sitecore.Shell.Applications.ContentEditor.EditorFormatter.SetProperties找到特性的完整列表。

ReflectionUtil.SetProperty(editor, "ID", field.ControlID); 
ReflectionUtil.SetProperty(editor, "ItemID", field.ItemField.Item.ID.ToString()); 
ReflectionUtil.SetProperty(editor, "ItemVersion", field.ItemField.Item.Version.ToString()); 
ReflectionUtil.SetProperty(editor, "ItemLanguage", field.ItemField.Item.Language.ToString()); 
ReflectionUtil.SetProperty(editor, "FieldID", field.ItemField.ID.ToString()); 
ReflectionUtil.SetProperty(editor, "Source", field.ItemField.Source); 
ReflectionUtil.SetProperty(editor, "ReadOnly", readOnly); 
ReflectionUtil.SetProperty(editor, "Disabled", readOnly); 
+0

謝謝,但它看起來ID是指Web控件的ID(例如:FIELD23212622),而不是模板字段項的ID。 Humm ... –

+0

對不起,追蹤瞭解決方案並修復了我的答案。 – techphoria414

+0

謝謝,我會試一試。我只是意識到你是誰!哈哈。昨天在頁面編輯器上的精彩演示 –

相關問題