2009-12-14 106 views
0

我已創建多列自定義字段並將其部署到SharePoint中。爲了能夠使用我自定義字段中的字段值,我還部署了一個事件接收器,將三個值從我的自定義字段複製到三個單獨的常規文本字段。如果三個文本字段不存在,我使用代碼中的XML創建它們。即使字段存在,我也確保字段具有正確的可見性設置。非空字段在字中爲空

創建領域的XML:

string fieldXml = string.Format("<Field ID=\"{0}\" " + 
            "Type=\"{1}\" " + 
            "Name=\"{2}\" " + 
            "StaticName=\"{2}\" " + 
            "DisplayName=\"{2}\" " + 
            "Required=\"{3}\" " + 
            "ShowInEditForm=\"TRUE\" " + 
            "ShowInNewForm=\"TRUE\" " + 
            "ShowInDisplayForm=\"TRUE\" " + 
            "ShowInListSettings=\"TRUE\" " + 
            "ShowInViewForms=\"TRUE\" " + 
            "ShowInVersionHistory=\"TRUE\" " + 
            "ShowInFileDlg=\"TRUE\"" + 
            "></Field>", 
            Guid.NewGuid(), 
            fieldType, 
            fieldName, 
            required); 

list.Fields.AddFieldAsXml(fieldXml, true, SPAddFieldOptions.Default); 

確保可見性設置確定,當領域已經存在:

field.ShowInEditForm = true; 
field.ShowInNewForm = true; 
field.ShowInDisplayForm = true; 
field.ShowInListSettings = true; 
field.ShowInViewForms = true; 
field.ShowInVersionHistory = true; 
field.Update(); 
list.Update(); 

我發現沒有編程設置ShowInFileDlg財產的方式,一旦領域創建。

事情是,這段代碼很好用,直到我在MS Word中打開一個文檔,並且三個文本字段都在列表中分配了文本,但在Word中它們是空的!

有沒有人看過這個,我做錯了什麼!?

+0

通過使用docx擴展而不是舊文檔來解決它! – 2009-12-14 15:22:40

+0

如果有人有時間。關於以編程方式向列表項添加字段的最佳做法是什麼?是否應該將它們添加到內容類型,列表或列表項目中? – 2009-12-14 15:24:11

回答

0

爲了能夠在DIP(在word文檔上的文檔信息面板)打開一個領域,你需要到的sourceID屬性添加到域:

SourceID="http://schemas.microsoft.com/sharepoint/v3"

欲瞭解更多信息,請參閱here( MSDN)。